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

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

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

一、基本流程

1、目录准备

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

先进入 /data 目录:

cd /data

创建 mysql 目录并进入:

mkdir mysql
cd 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=123456 \
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镜像版本了。


http://www.mrgr.cn/news/97675.html

相关文章:

  • 数据结构和算法(十二)--最小生成树
  • 【组件封装-优化】vue+element plus:二次封装select组件,实现下拉列表有分页、自定义是否可搜索的一系列功能
  • 【杂谈】Godot4.4导出到Android平台(正式导出)
  • 最新版PhpStorm超详细图文安装教程,带补丁包(2025最新版保姆级教程)
  • c语言 文件操作
  • SQL语法进阶篇(二),数据库复杂查询——窗口函数
  • 【蓝桥杯2024省B】好数 三种解法全解析 | C/C++暴力法→剪枝优化→构造法演进
  • GZ036区块链卷一 EtherStore合约漏洞详解
  • React 列表渲染
  • Java 大视界 -- 基于 Java 的大数据分布式缓存技术在电商高并发场景下的性能优化(181)
  • 算法精讲【整数二分】(实战教学)
  • Kotlin学习
  • debian12安装mysql5.7.42(deb)
  • C++中数组的概念
  • 【Linux高级IO(三)】Reactor
  • fastGPT—前端开发获取api密钥调用机器人对话接口(HTML实现)
  • java线程安全-单例模式-线程通信
  • 自动化框架及其设计搭建浅谈(三)--自动化测试框架设计最佳实践
  • Crow介绍及使用
  • Vue3+Vite+TypeScript+Element Plus开发-08.登录设计