如何在docker-compose檔案中啟用遠端存取mysql docker的root使用者?
P粉145543872
P粉145543872 2023-09-06 13:10:11
0
1
623

目前,我正在使用以下簡單的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粉145543872
P粉145543872

全部回覆(1)
P粉144705065

我認為我們可以透過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子主題下。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板