搜尋

首頁  >  問答  >  主體

如何在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粉145543872447 天前625

全部回覆(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
  • 取消回覆