配置文件
```
```
## 解決問題
docker compose mysql sha256_password
參考文章
[docker-compose啟動mysql並配置遠程訪問 - 簡書](https://www.jianshu.com/p/eeb96feac9ec)
參考文章內容
version: "3.7"
services:
mysql:
container_name: mysql
image: mysql:latest #從私有倉庫拉鏡像
restart: always
command: --default-authentication-plugin=mysql_native_password #這行代碼解決無法訪問的問題
volumes:
- /data/mysql/data/:/var/lib/mysql/ #映射mysql的數據目錄到宿主機,保存數據
- /data/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf #把mysql的配置文件映射到容器的相應目錄
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- LANG=C.UTF-8
啟動mysql: sudo docker-compose -f mysql.yml up -d 沒有報錯即啟動成功

查看運行的docker容器:sudo docker ps

已Bash進入容器:sudo docker exec -it 7f /bin/bash
mysql -u root -p

mysql> use mysql;
mysql> grant all privileges on *.* to 'root'@'%';
mysql> flush privileges;
刷新權限遠程還是無法訪問,Navicat包2509authentication plugin caching_sha2錯誤。查詢資料發現,mysql是8.0版本的,mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
Navicat再次連接OK。
Mysql遠程連接報錯:authentication plugin caching_sha2 mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。 方法:修改用戶的密碼和加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
要同賦予用戶權限時相同。 若是localhost就同上。%也是如此
mysql8.*的新特性 caching_sha2_password 密碼加密方式
以前版本的mysql密碼加密使用的是 mysql_native_password
新添加的用戶密碼默認使用的 caching_sha2_password
如果在以前mysql基礎上升級的 就得用戶使用的密碼加密使用的是 mysql_native_password
如果使用以前的密碼加密方式,就修改文件 /etc/my.cnf
數據庫時區問題:
鏈接數據庫時serverTimezone=UTC這個參數出的問題
只要改成serverTimezone=Asia/Shanghai就OK了!
參考原文:https://blog.csdn.net/weixin_42459563/article/details/80924634