[英]Add another user to MySQL in Kubernetes
这是我的MySQL
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: abc-def-my-mysql
namespace: abc-sk-test
labels:
project: abc
ca: my
spec:
replicas: 1
template:
metadata:
labels:
app: abc-def-my-mysql
project: abc
ca: my
spec:
containers:
- name: mysql
image: mysql:5.6
args: ["--default-authentication-plugin=mysql_native_password", "--ignore-db-dir=lost+found"]
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
- name: MYSQL_DATABASE
value: "my_abc"
- name: MYSQL_USER
value: "test_user"
- name: MYSQL_PASSWORD
value: "12345"
volumeMounts:
- mountPath: /var/lib/mysql
name: abc-def-my-mysql-storage
volumes:
- name: abc-def-my-mysql-storage
persistentVolumeClaim:
claimName: abc-def-my-mysql-pvc
我想向mysql添加另一个用户,以便真正的用户可以连接到它。 而不是使用“ test_user”。 我如何添加另一个用户,就像将其他任何环境变量添加到上述配置中一样
根据用户生命周期的不同,您可以在容器启动时通过MySQL的docker启动脚本(安装在/docker-entrypoint-initdb.d上)创建用户,也可以在服务器启动后在CLI上创建用户。
使用容器启动脚本,您可能必须照顾运行同一脚本的多个容器,例如, CREATE user if exists
。
如果数据库服务器寿命很长,则CLI选项可能更适合,并且即使在服务器创建后,您也会收到多个用户创建的请求。
将“创建用户脚本”挂载到容器的/docker-entrypoint-initdb.d
目录中。 它会在第一次Pod启动时执行一次。
apiVersion: extensions/v1beta1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql
.....
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
.....
volumeMounts:
- name: mysql-initdb
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: mysql-initdb
configMap:
name: initdb
---
apiVersion: v1
kind: ConfigMap
metadata:
name: initdb
data:
initdb.sql: |-
CREATE USER 'first_user'@'%' IDENTIFIED BY '111' ;
CREATE USER 'second_user'@'%' IDENTIFIED BY '222' ;
测试:
kubectl exec -it <PODNAME> -- mysql -uroot -p -e 'SELECT user, host FROM mysql.user;'
+-------------+------+
| user | host |
+-------------+------+
| first_user | % |
| second_user | % |
| root | % |
+-------------+------+
请参阅初始化新实例 Mysql Docker Hub映像:
首次启动容器时,将创建一个具有指定名称的新数据库,并使用提供的配置变量对其进行初始化。 此外,它将执行在
/docker-entrypoint-initdb.d
中找到的扩展名为.sh,
.sql
和.sql.gz
/docker-entrypoint-initdb.d
。 文件将按字母顺序执行。您可以通过将SQL转储安装到该目录中并为自定义图像提供贡献的数据来轻松地填充
mysql
服务。 默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.