【问题标题】:How to add DBA account in docker-compose.yml?如何在 docker-compose.yml 中添加 DBA 帐户?
【发布时间】:2021-10-21 13:59:47
【问题描述】:

在下面的 docker-compose.yml 中,如何在 MySQL 中添加带有“GRANT ALL PRIVILEGES”的 DBA 帐户(例如,用户名:abc 密码:123)?

我尝试在 'MYSQL_PASSWORD: secret' 下添加 'MYSQL_DBA_USER: abc MYSQL_DBA_PASSWORD: 123' 但它不起作用。

services:
 mysql-server:
    container_name: mysql
    ports:
        - "18080:8080"
    environment:
        MYSQL_ROOT_PASSWORD: 12345
        MYSQL_DATABASE: wordpress
        MYSQL_USER: wordpress_user
        MYSQL_PASSWORD: secret
    image: mysql/mysql-server
 wordpress:
    image: wordpress:latest
    container_name: wordpress
    ports:
        - "20080:80"
    environment:
        WORDPRESS_DB_HOST: mysql-server:3306
        WORDPRESS_DB_USER: wordpress_user
        WORDPRESS_DB_PASSWORD: secret
    depends_on:
    - mysql-server

【问题讨论】:

    标签: mysql docker docker-compose


    【解决方案1】:

    如果你将任何以 .sql 或 .sh 结尾的 SQL 脚本文件映射到容器中的目录/docker-entrypoint-initdb.d 中,它们将在创建数据库时运行。

    因此,如果您在与 docker-compose 文件相同的目录中创建一个名为 create-dba-user.sql 的脚本,并像这样将卷映射添加到您的 docker-compose 文件中

    mysql-server:
        container_name: mysql
        ports:
            - "18080:8080"
        environment:
            MYSQL_ROOT_PASSWORD: 12345
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress_user
            MYSQL_PASSWORD: secret
        volumes:
            - ./create-dba-user.sql:/docker-entrypoint-initdb.d/create-dba-user.sql
        image: mysql/mysql-server
    

    然后您的脚本将在创建数据库时运行。如果您有一个现有的数据库,那么它将不会运行。但是您的 compose 文件似乎没有持久化数据库,因此每次运行都会有一个新的数据库。

    【讨论】:

    • 谢谢!它有效!
    • @kakaka 太棒了!我可以让您将答案标记为已接受吗? TIA
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多