Skip to content
← 返回Docker列表
故障排查历史记录

历史记录 · 保留原版本与环境,供查阅参考。

MySQL 容器部署与旧客户端认证排错 ​

本文保留 2020 年 MySQL 5.7 与旧客户端认证故障记录,两个片段不是同一版本部署闭环。镜像加速地址、明文密码、全接口端口与截图都依赖旧环境,不作为新部署模板;当前容器持久化与凭据准备可先读存储与备份。

前期工作安装docker ​

docker version

(历史个人站点截图已移除。)

docker 国内镜像设置 ​

docker
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.example.com",
"https://mirror.example.com",
"https://mirror.example.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}

#重启docker服务
systemctl restart docker

docker 安装mysql 5.7 ​

docker pull mysql:5.7 (历史个人站点截图已移除。)

查看镜像 ​

docker images (历史个人站点截图已移除。)

运行docker 镜像 ​

docker run --name mysql -e MYSQL_ROOT_PASSWORD=lgr123456 -d -i -p 3306:3306 --restart=always mysql:5.7

以上参数说明 ​

  • name mysql 将容器命名为mysql,后面可以用这个name进行容器的启动暂停等操作
  • e MYSQL_ROOT_PASSWORD=123456 设置MySQL密码为123456
  • d 此容器在后台运行,并且返回容器的ID
  • i 保持标准输入打开;与 -d 组合不表示当前已进入交互会话
  • p 进行端口映射,格式为主机(宿主)端口:容器端口
  • restart=always 当docker重启时,该容器自动重启

连接测试 ​

(历史个人站点截图已移除。)

进入docker 中mysql ​

docker exec -ti mysql bash

(历史个人站点截图已移除。)

(历史个人站点截图已移除。)

mac os docker 安装出现错误 ​

bash

2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found

先区分版本与认证插件 ​

先分别记录服务端 SELECT VERSION()、客户端 mysql --version 和该账户的认证插件。错误表示客户端无法加载所需插件,优先使用支持该认证方式的客户端;改密码本身不会补齐客户端插件。下面 ALTER USER 同时改变认证插件与密码,只是旧兼容尝试。mysql_native_password 在 8.4 默认禁用、9.0 已移除,不可机械套用,见MySQL 官方说明。

原记录(未确认两端版本):

mysql

问题:

连接Docker启动的mysql出现:ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded

C:\mysqldata>mysql -h 127.0.0.1 -P 13306 -uroot -p
Enter password: ****
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: ÕÒ²»µ½Ö¸¶¨µÄÄ£¿é¡£

原记录尝试的兼容步骤(不是当前通用方案):

1.进入mysql容器

docker exec -it mysql /bin/bash

2.进入mysql

mysql -uroot -p

3.同时切换认证插件并修改密码(历史尝试)

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

继续阅读