我正在尝试为MySQL pod创建其他用户。我使用了env变量-MYSQL_USER来创建额外的用户。在创建pod之后。我只能使用第二个用户而不是第一个用户。有没有办法可以做到呢?
MYSQL_USER
jm81lzqq1#
您可以使用/docker-entrypoint-initdb.d第一次启动container时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh的文件。在/docker-entrypoint-initdb. d中找到的.sql和. sql.gz。文件将按字母顺序执行。通过将SQL转储装入该目录并提供包含贡献数据的自定义映像,可以轻松地填充mysql服务。默认情况下,SQL文件将导入MYSQL_DATABASE变量指定的数据库。您可以将文件挂载到该路径
/docker-entrypoint-initdb.d
volumes: - ./<your-path-to-create-user.sql>:/docker-entrypoint-initdb.d
创建用户.sql
CREATE USER 'root'@'%' IDENTIFIED BY 'password'; CREATE USER 'user1'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
因此,初始化后,上述SQL脚本将得到执行,并创建用户到数据库,您可以编辑它根据需要。如果您在Kubernetes上,则可以使用配置Map
apiVersion: extensions/v1beta1 kind: Pod metadata: name: mysql spec: containers: - name: mysql image: mysql ..... env: - name: MYSQL_ROOT_PASSWORD value: "root" ..... volumeMounts: - name: mysql-inituser mountPath: /docker-entrypoint-initdb.d volumes: - name: mysql-inituser configMap: name: users --- apiVersion: v1 kind: ConfigMap metadata: name: users data: create-user.sql: |- CREATE USER 'root'@'%' IDENTIFIED BY 'password'; CREATE USER 'user1'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
1条答案
按热度按时间jm81lzqq1#
您可以使用
/docker-entrypoint-initdb.d
第一次启动container时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh的文件。在/docker-entrypoint-initdb. d中找到的.sql和. sql.gz。文件将按字母顺序执行。通过将SQL转储装入该目录并提供包含贡献数据的自定义映像,可以轻松地填充mysql服务。默认情况下,SQL文件将导入MYSQL_DATABASE变量指定的数据库。
您可以将文件挂载到该路径
创建用户.sql
因此,初始化后,上述SQL脚本将得到执行,并创建用户到数据库,您可以编辑它根据需要。
如果您在Kubernetes上,则可以使用配置Map