一
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語句,因為初始化順序是按文件名來的。