前提:
异常:
docker 安装 mysql 8 外部连接会报一下异常: Authentication plugin 'caching_sha2_password' cannot be loaded
原因
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
安装环境:
centos7
Docker version 1.13.1
安装步骤:
1.拉取镜像,不带版本号,默认拉取最高版本: docker pull mysql
2.查看镜像:docker images
3.启动镜像 做端口映射 3306到外网,不然连接不上:docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
更多映射 : docker run --name mysql-hw --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/ancen/mysql/data:/var/lib/mysql -v /root/ancen/mysql/log:/var/log/mysql -d mysql --lower_case_table_names=1
–restart=always: 当Docker 重启时,容器会自动启动。
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-e MYSQL_ROOT_PASSWORD :设置mysql密码
-v /home/mysql/:/var/lib/mysql:挂载磁盘实现数据持久化
–lower_case_table_names=1 :忽略大小写,docker mysql默认区分大小写的
设置时区
default-time_zone=‘+8:00’
//只要将配置文件拷贝镜像文件出来,在其修改后,在替换上去
docker cp mysql-hw:/etc/mysql/my.cnf /root/ancen/mysql
docker cp /root/ancen/mysql/my.cnf mysql-hw:/etc/mysql/my.cnf
//修改完后需重启
docker restart mysql-hw
4.查看运行中的容器,看是否启动成功:
5.外部连接报错:
解决方法
1.进入docker容器 :docker exec -it c4bf367b7155 bash
2.登陆数据库 : mysql -uroot -p{密码}。 借鉴 :https://blog.csdn.net/u014527619/article/details/80509671 不成功 。
以这种方式登陆(成功) :
1. mysql -uroot -p 。回车
2.输入密码
3.修改数据库
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
4.重新修改密码后可连接成功
mysql> alter user 'root'@'%' identified by '123456';
5.刷新数据库
mysql> flush privileges;
6.重新外网登陆ok
文章借鉴:https://blog.csdn.net/u014527619/article/details/80509671
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端