当前位置: 首页 > news >正文

mysql镜像创建docker容器,及其可能遇到的问题

前提,已经弄好基本的docker服务了。

一、基本流程

1、目录准备

我自己的资料喜欢放在 /data 目录下,所以老规矩:

先进入 /data 目录:

cd /data

创建 mysql 目录:

mkdir mysql

2、镜像查找

docker search hub.rat.dev/mysql:8.0.27

3、镜像拉取

docker pull hub.rat.dev/mysql:8.0.27

4、创建容器

docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=151128 \
hub.rat.dev/mysql:8.0.27

5、查看容器

docker ps

二、各类问题合集

1、【解决】mysql镜像拉取出现网络错误

镜像加速器参照(下面的连接会不断更新国内能够使用的Docker镜像源,可以自己看看,自己的服务器可以用哪一个或者哪几个):

国内能用的Docker镜像源【2025最新持续更新】_docker 镜像-CSDN博客

有哪些可以用的镜像加速器、具体怎么使用,参照上文即可。

2、【解决】caching sha2 password

(1)背景

docker容器使用的mysql镜像是9版本。

我电脑安装的navicat是16,同事应该是12及以下的版本。

我的电脑用navicat连接远程服务器的mysql,没有问题。但同事的不可以,会报错。

显示:Authentication plugin 'caching sha2 password' cannot be loaded

(2)原因

在使用 MySQL 8 及以上版本时,默认的加密方式是 caching_sha2_password,而在 MySQL 8 之前的版本中,默认的加密方式是 mysql_native_password。因此,当使用一些旧版本的客户端(如 Navicat Premium 12)连接 MySQL 数据库时,可能会出现 Authentication plugin 'caching_sha2_password' cannot be loaded 的错误。

(3)解决思路

更换一下加密方式,参照网络文档(直接走这个文档,mysql镜像版本太高的话,会报错):

navicat连接MySQL8.0提示caching_sha2_password问题解决方法-CSDN博客

报错信息:

ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

(4)【解决】mysql_native_password is not loaded

检查了一下,发现是mysql镜像太高了,到9了。

查看mysql镜像版本:打开与数据库的连接,不需要引用表,直接输入查询语句。

SELECT VERSION();

具体操作见 3。

3、更换mysql镜像

那么,现在需要把mysql镜像的版本降下来。

(1)备份数据!!!

(2)备份数据!!!

(3)备份数据!!!

把所有数据库表的转储成sql下来,转储的时候千万把数据一起转储出来,别只转储了表结构。

记录所有数据库表的名称、字符集、排序规则。等一下要还原回去的。

(4)停止mysql容器

docker stop mysql

(5)mysql数据文件夹

cd /data
mv mysql mysql.bak

将mysql对应的数据文件夹进行重命名,后期如果创建失败,能够把文件夹重新还原回去。

(6)创建mysql容器

参照一、基本流程进行

(7)进入mysql容器内部

docker exec -it mysql /bin/bash

需要注意:如果刚刚stop的容器叫mysql,又没有删除。那么这次创建的容器就不能够叫mysql,可以改成 mysql_3306 或者其他。

(8)打开mysql

mysql -uroot -p

回车后输入密码即可。

或者-p后面直接带上密码,然后回车。

(9)跟着文档走一次

navicat连接MySQL8.0提示caching_sha2_password问题解决方法-CSDN博客

(10)用navicat连接mysql

应该就可以了。

(11)数据还原

依次:建数据库 - 按照名称、字符集、排序进行回填 - 运行转储的sql文件

(12)碎碎念

本来不想这么麻烦的,有别的方式可以解决报错:

ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

参考文档(写得非常清晰,鼓掌):

ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded-CSDN博客

但是我弄的这个镜像,什么命令都没有:vim、yum、apk、apt-get、dnf、apt、wegt.......

倒是rpm、curl、mv可以用,通过curl下载下来的rpm包,rpm -ivh又一直报错。

查了一下 /etc/os-release,是Oracle Linux Server。

我直接访问:

Oracle Linux 7 (x86_64) Latest | Oracle, Software. Hardware. Complete.

一看,n个包,尝试手动下载,初略下载了几个,然后通过docker创建容器映射的目录方式,迁移到容器内部。然后开始摆烂。

你依赖我,我依赖它的,啊啊啊啊。不下载了。

想了想,也不是非要去改my.cnf。但是同事又连不上mysql,如果不通过升级navicat的版本的方式,就只能去降mysql镜像版本了。

相关文章:

  • 远程监控系统项目里练习
  • 分享一个可以跨平台进行等保核查的脚本
  • 记录一次家里宽带 被修改带宽维权的事情
  • Design Compiler:语法检查工具dcprocheck
  • mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图
  • C++中常见函数
  • 算法进阶指南 分形
  • Java垃圾回收的隐性杀手:过早晋升的识别与优化实战
  • 「合诚」携手企企通共建新材料和健康产业采购数智化新生态
  • rqlite:一个基于SQLite构建的分布式数据库
  • MySQL数据库应用技术试卷
  • main函数参数
  • PyTorch 深度学习 || 6. Transformer | Ch6.2 注意力机制
  • 使用PX4,gazebo,mavros为旋翼添加下视的相机(仿真采集openrealm数据集-第一步)
  • Java 通过 JNI 调用 C++ 动态库的完整流程
  • 获客系统 V2
  • AI一周事件(2025年3月31日至4月7日)
  • 汇丰eee2
  • LDAP高效数据同步:Syncrepl复制模式实战指南
  • 【AI】Ragflow构建本地知识库
  • 习近平将出席中国—拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 巴基斯坦总理:希望通过和平对话方式解决与印方问题
  • 外交部发言人就印巴局势升级答记者问
  • 上海发布首份直播电商行业自律公约,禁止虚假宣传、商业诋毁
  • 2025年上海市模范集体、劳动模范和先进工作者名单揭晓
  • 代理销售保险存在误导行为,农业银行重庆市分行相关负责人被罚款0.1万元