目前,我正在使用以下簡單的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中建立的用戶。
我認為我們可以透過
MYSQL_INITDB
來實現這一點 - 在MySQL容器中設定一個初始化腳本。首先,您可以像下面這樣為MYSQL_INITDB新增一個環境變數
然後,您需要按照以下方式更新磁碟區配置
在與您的docker-compose檔案相同的目錄中建立一個01.sql檔案。
在這裡查看官方文件:https://hub.docker.com/_/mysql/ 在Initializing a fresh instance子主題下。