首页  >  问答  >  正文

如何在docker-compose文件中启用远程访问mysql docker的root用户?

目前,我正在使用以下简单的YAML文件来启动一个MySQL服务器

version: '3.3'
services:
  db:
    image: mysql/mysql-server
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      MYSQL_USER: 'user'
      MYSQL_PASSWORD: 'strongpasswordnobodycanguessorcrackatall'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'somethingevenmorestrongerthaneverbefore'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - compose-my-db
volumes:
  - ./:compose-my-db:

然而,我必须连接到容器并使用以下命令:

将 *.* 上的所有内容授予 'c'@'%';刷新权限;

这样可以给予我所需的所有权限,并允许通过compose文件中创建的用户进行远程连接。

我知道我可以修改my.cnf文件或添加在mysqld初始化后运行的init脚本,但我希望在Docker-Compose中创建的用户。

P粉145543872P粉145543872382 天前571

全部回复(1)我来回复

  • P粉144705065

    P粉1447050652023-09-07 10:38:13

    我认为我们可以通过MYSQL_INITDB来实现这一点 - 在MySQL容器中设置一个初始化脚本。

    首先,您可以像下面这样为MYSQL_INITDB添加一个环境变量

    MYSQL_INITDB: /docker-entrypoint-initdb.d/01.sql

    然后,您需要按照以下方式更新卷配置

    volumes:
      - ./compose-my-db:/docker-entrypoint-initdb.d

    在与您的docker-compose文件相同的目录中创建一个01.sql文件。

    GRANT ALL ON *.* TO 'c'@'%';
    FLUSH PRIVILEGES;

    在这里查看官方文档:https://hub.docker.com/_/mysql/Initializing a fresh instance子主题下。

    回复
    0
  • 取消回复