【问题标题】:create additional users in mysql kubernetes pods在 mysql kubernetes pod 中创建额外的用户
【发布时间】:2023-01-17 19:56:03
【问题描述】:

我正在尝试为 MySQL pod 创建其他用户。

我使用环境变量- MYSQL_USER 来创建其他用户。在创建 pod 之后。我只能使用第二个用户而不是第一个用户。

有什么办法可以做到这一点?

【问题讨论】:

    标签: mysql kubernetes


    【解决方案1】:

    您可以使用/docker-entrypoint-initdb.d

    当一个容器第一次启动时,一个新的数据库 将使用提供的创建和初始化指定的名称 配置变量。此外,它将执行文件 在中找到的扩展名 .sh、.sql 和 .sql.gz /docker-入口点-initdb.d。文件将按字母顺序执行 命令。您可以通过安装 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 脚本后将被执行并创建用户到数据库,你可以根据需要编辑它。

    如果你在库伯内斯你可以使用配置图

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

    【讨论】:

    • 玛纳瓦尔。谢谢你。由于涉及密码,我认为我们可以使用秘密代替配置映射。如我错了请纠正我。如果用户想更改自己的密码,程序是什么?需要更新秘密??或任何其他建议
    • 是的,你绝对可以使用秘密。如果您正在寻找更安全的解决方案,您也可以使用 Hashi corp vault 集成扩展上述 ref 文件。仅供基本参考共享。
    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2016-02-04
    • 2015-09-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多