在mysql kubernetes pod中创建其他用户

cdmah0mi  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(180)

我正在尝试为MySQL pod创建其他用户。
我使用了env变量-MYSQL_USER来创建额外的用户。在创建pod之后。我只能使用第二个用户而不是第一个用户。
有没有办法可以做到呢?

jm81lzqq

jm81lzqq1#

您可以使用/docker-entrypoint-initdb.d
第一次启动container时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh的文件。在/docker-entrypoint-initdb. d中找到的.sql和. sql.gz。文件将按字母顺序执行。通过将SQL转储装入该目录并提供包含贡献数据的自定义映像,可以轻松地填充mysql服务。默认情况下,SQL文件将导入MYSQL_DATABASE变量指定的数据库。
您可以将文件挂载到该路径

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'@'%';

相关问题