docker-compose 安裝 mysql並初始化使用者與sql檔案
阿新 • • 發佈:2021-01-03
一
docker-compose.yml檔案
version: '3' services: mysql8.0: # 映象名 image: mysql:8.0.21 # 容器名(以後的控制都通過這個) container_name: mysql8.0 # 重啟策略 restart: always environment: # 時區上海 TZ: Asia/Shanghai # root 密碼 MYSQL_ROOT_PASSWORD: root # 初始化資料庫(後續的初始化sql會在這個庫執行) MYSQL_DATABASE: nacos_config # 初始化使用者(不能是root 會報錯, 後續需要給新使用者賦予許可權) MYSQL_USER: nacos # 使用者密碼 MYSQL_PASSWORD: nacos # 對映埠 ports: - 3306:3306 volumes: # 資料掛載 #- /root/mysql/data/:/var/lib/mysql/ # 配置掛載 #- /root/mysql/conf/:/etc/mysql/conf.d/ # 初始化目錄掛載,注意此處我只跑了這個掛載,只是為了說明其他配置不應該資料初始化 - /root/mysql/init/:/docker-entrypoint-initdb.d/ command: # 將mysql8.0預設密碼策略 修改為 原先 策略 (mysql8.0對其預設策略做了更改 會導致密碼無法匹配) --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1
二
如果在sql檔案內,需要手動賦予使用者許可權
# grant all privileges on dbname.tablename to 'userName'@'%'; # 比如想給使用者nacos賦予資料庫test所有的表的許可權並且不限制nacos使用者的連線地址,程式碼如下 grant all privileges on test.* to 'nacos'@'%'; # 重新整理許可權 flush privileges;
三 mysql8.*才開始出現的坑
1.初始化的使用者不能是root!差評!
2.預設密碼策略的要改為mysql_native_password
3.如果是幾個.sql檔案,記得寫上user database語句,因為初始化順序是按檔名來的。