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 dockerdocker 安装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';继续阅读
- 知识专题
- 命令
- 命令