Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;

  1. 先拉取MySql5.6镜像(也可以拉取默认版本,若Mysql镜像默认版本latest为8.0以上,Navict连接会报错,最下方有解决方法),成功拉取之后,使用docker images命令查看。
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第1张图片
属性 说明
REPOSITORY 表示镜像的仓库源
TAG 镜像的标签,即版本latest为默认最新的版本
IMAGE ID 镜像ID
CREATED 镜像创建时间
SIZE 镜像大小
  1. 运行mysql容器
    启动一般命令如下:
    docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
    正常使用docker启动mysql容器,当关闭容器时,容器中的数据会消失,所以要将mysql容器中的数据持久化到主机上,持久化数据启动mysql容器命令如下:
 docker run -p 3306:3306 --name mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d 
 				-v /usr/local/mysql/logs:/logs 
 				-v /usr/local/mysql/data:/var/lib/mysql 
 				-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令 说明
-p 3306:3306 将主机的3306端口映射到Docker容器的3306端口
–name mysql 指定运行的服务的名字为mysql
-v /usr/local/mysql/data:/var/lib/mysql 将主机/usr/local/mysql/data目录挂载到容器指定目录
-e MYSQL_ROOT_PASSWORD=123456 初始化root用户密码为123456
-d 后台运行开启的服务
mysql:5.6 指定运行的服务和版本
  1. 查看运行中的容器docker ps,获取容器ID
    在这里插入图片描述
属性 说明
CONTAINER ID 容器ID
IMAGE 镜像名
PORT 端口
NAMES 容器名
  1. 进入运行成功的容器(根据容器ID)
docker exec -it 6cceb652c1bb /bin/bash

在这里插入图片描述

  1. 进入MySql服务器mysql -uroot -p密码为:123456
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第2张图片

  2. 创建一个数据库db01
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第3张图片

  3. 进入db01数据库,创建一个user表,有id,name字段
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第4张图片

  4. 执行插入和查询语句
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第5张图片

  5. 使用Window系统下的Navicat Premium 连接Docker里的MySql服务
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第6张图片
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第7张图片
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第8张图片
    至此,运行Mysql镜像大功告成!!!

  6. 在一次安装完镜像并成功启动Mysql容器,用Navicat连接报错如下:
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第9张图片
    报错原因:在拉取镜像的时候,拉取的是默认版本,然后去官网docker hub查看默认版本的具体版本号,发现latest版本更新到了8.0版本.而Mysql从8.0版本开始,使用的加密规则是 caching_sha2_password,之前的加密规则为mysql_native_password,而Navicat找不到最新的身份验证插件,所以才会出现以上报错

在这里插入图片描述
Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第10张图片
解决办法:修改加密规则为之前的mysql_native_password

  • 按照上面的步骤进入Mysql容器,进入之后输入命令(进行远程连接授权)
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
  • 刷新权限
    FLUSH PRIVILEGES;
  • 更改加密规则
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
  • 重置root用户密码,更改密码为password
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  • 刷新权限
    FLUSH PRIVILEGES;
    Docker运行MySql镜像(数据持久化),在Navicat连接到Docker里的MySql服务的步骤(笔记),附Navicat连接Docker中的Mysql容器服务报错2059的解决方案;_第11张图片
    重新使用Navicat连接,连接成功!!!

你可能感兴趣的:(Docker)