Docker部署MySQL
# Docker 部署MySQL数据库
# 拉取 MySQL 8.0 官方镜像
docker pull mysql:8.0
1
# 创建数据存储目录(可选但推荐)
mkdir -p /data/mysql/{conf,data,logs}
1
# 运行 MySQL 容器
docker run -d \
--name mysql-container \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=12345678 \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/logs:/var/log/mysql \
--restart=always \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 问题
问题描述:docker部署后 使用navicat链接数据库 出现authorIcation plugin caching_sha2_password cannot be loaded
这个错误是由于 MySQL 8.0 默认使用 caching_sha2_password 认证插件,而 Navicat 旧版本可能只支持 mysql_native_password 认证方式导致的。
# 修改 MySQL 用户认证方式
- 进入 MySQL 容器
docker exec -it mysql8 mysql -uroot -p
1
- 修改用户认证方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';
GRANT ALL PRIVILEGES ON your_database.* TO 'root'@'%';
FLUSH PRIVILEGES;
1
2
3
4
5
2
3
4
5
- 验证修改
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
1
- 预期输出
+------+------+-----------------------+ | user | host | plugin | +------+------+-----------------------+ | root | % | mysql_native_password | +------+------+-----------------------+
Last Updated: 2025/06/18, 08:59:15