背景介绍

今天开始做集成测试,需要把程序和环境重新部署在新的服务器上。项目的环境都是基于Docker来的,所以数据库也是选择从Docker官网上面拉官方的MySQL镜像。(Tag = 8.0.12)

从部署到导入数据,一切正常。完事之后进入container里面简单的查了下数据的个数,em~~~ 没问题了。 于是边和测试的同事说了一声,下午可以看是集成测试了。

中午吃完发,顶着烈日出去办点事,完事之后正往回走着突然就接到了测试同事的电话。。

QA:那个XX,你的数据库部署好像有问题啊,我这边用工具连不上。。。 好吧,

我: 没问题啊,我上午检查过的。。。 好吧,我一会就回去,咱们一起看看吧。

原因

回到公司,找到同事,发现报错如下: “Authentication plugin 'caching_sha2_password' cannot be loaded”。

问题的原因:是从MySQL8.0 开始,默认的加密规则使用的是 caching_sha2_password。 我看了下我从官方拉下来的 docker 镜像版本是8.0.12(完美中招)

解决方案

于是在网上搜了一下,很快就找到了解决方案。

1. 首先找到当前数据库用户root的加密规则

mysql>use mysql;
mysql>select user, host, plugin from user

2. 修改加密规则为“mysql_native_password”

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

注: password 替换为 root 的密码; 或者直接更新这一行 pluggin字段 的值为 “mysql_native_password”

完成后效果如下:

其实到了这儿,问题已经解决。 那么再想一下,既然这个设置是默认的,那么我们能不能在部署数据库的把它修改掉呢?

更为优雅的解决方案

又重新回到了 MySQL 官方在docker的仓库中,仔细的阅读了一遍官方的说明。其实,我们在启动MySQL 容器的时候,是可以修改一些设置的。主要有2种方式。1. 自定义配置文件,并 mount 到 container里。这样在MySQL启动时,会加载我们的配置文件。 2. 启动MySQL容器是传入CMD,通过命令修改默认加密规则(下面绿色部分)

# docker run -d -e MYSQL_ROOT_PASSWORD= -e MYSQL_DATABASE=weather_db -p : --name test-mysql --restart always -v  /home/ct/mysql/data:/var/lib/mysql  
mysql:8.0.12 --default-authentication-plugin=mysql_native_password

另外,还有通过 docker-compose 方式来实现的,这里就不再赘述,请参考官方描述。

OK!感谢收看,同时也欢迎大家积极留言讨论哈~~

参考

https://majing.io/posts/10000021021192

https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded

https://hub.docker.com/r/_/mysql/

修改 Docker-MySQL 容器的 默认用户加密规则的更多相关文章

  1. docker mysql容器的安装使用

    docker拉取镜像的命令为 docker pull image[:TAG] 如果我们想安装的mysql版本不是最新的版本,则需要填充TAG,如果不带上TAG,则默认安装的为最新版本,虽然可以通过do ...

  2. 修改Docker中容器的时间和宿主主机时间一致

    修改Docker容器的时间和宿主时间一致 在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 DOCKER容器的时间 世界 ...

  3. win10修改Docker Desktop Installer的默认安装目录

    Docker Desktop Installer软件默认安装会装在C:\Program Files\Docker的目录下,默认是不能修改的,但是我们可以通过设置软链接的方式把安装默认弄到其他盘 我们先 ...

  4. docker mysql 容器报too many connections 引发的liunx磁盘扩容操作

    症状每次删除mysql容器重启没两分钟又报标题错 df -h 命令查看各个挂载空间应用情况发现root home var 三个文件目录挂载的空间满了 网上百度了一下liunx磁盘扩容操作,fdisk ...

  5. Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效

    我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...

  6. Docker】如何修改Docker的默认镜像存储位置

    江湖有多大,坑就有多多……我使用的服务器, 系统盘根目录只有20G, 默认Docker 的镜像文件是安装在/var/lib/docker 目录下的, 这样的话我根本装不了太多的镜像,之前遇到一种情况就 ...

  7. docker 创建.netcore2.2 api容器 以及连接mysql容器

    1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker:  Docker for Windows  docker在windows上安装完毕之后可以看到 2]拉取 ...

  8. 修改docker image存放位置

    修改镜像和容器的默认存放路径 指定镜像和容器存放路径的参数是--graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可.刚好有个300g盘的挂在/data目录上,所以在这个 ...

  9. docker mysql配置挂载到卷

    docker--将mysql配置挂载到卷 1.首先在根目录创建两个文件夹,其中config文件夹中创建my.cnf配置文件.data文件夹存放数据文件,一定要为空. /docker/mysql/con ...

随机推荐

  1. block ,GCD(转)

    原文:http://blog.sina.com.cn/s/blog_45e2b66c01010dhd.html 1.GCD之dispatch queue http://www.cnblogs.com/ ...

  2. JavaScript权威指南——跳转语句

    前言:JavaScript中有一类语句叫做跳转语句.从名称就可以看出,它使得JavaScript的执行可以从一个位置跳转到另一个位置. return语句让解释器跳出循环体的执行,并提供本次调用的返回值 ...

  3. SecureCRT来上传和下载文件

    引用:https://www.cnblogs.com/zhengyihan1216/p/6260667.html Linux--用SecureCRT来上传和下载文件 SecureCRT下的文件传输协议 ...

  4. SIM800C Couldn't pair with xxx because of an incorrect PIN or passkey

    /******************************************************************************* * SIM800C Couldn't ...

  5. STM32中TIMx的映射及其通道

    TIMx,通道x,无映射,部分映射,完全映射    TIM1_CH1, PA8,    PE9,    TIM1_CH2, PA9,    PE11    TIM1_CH3, PA10,    PE1 ...

  6. CTF中图片隐藏文件分离方法

    CTF中图片隐藏文件分离方法   0x01 分析 这里我们以图片为载体,给了这样的一样图片:2.jpg 首先我们需要对图片进行分析,这里我们需要用到kali里面的一个工具 binwalk ,想要了解这 ...

  7. 【矩阵快速幂】【杭电OJ1757】

    http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (Java/ ...

  8. 2018-2019-2 20165212 《网络对抗技术》Exp3 免杀原理与实践

    2018-2019-2 20165212 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...

  9. bzoj 3528 [ZJOI2014] 星系调查 题解

    [原题] 星系调查 [问题描写叙述] 银河历59451年.在银河系有许很多多已被人类殖民的星系.如果想要在行 星系间往来,大家一般使用连接两个行星系的跳跃星门.  一个跳跃星门能够把 物质在它所连接的 ...

  10. 推荐10款优秀的JavaScript Web UI库 框架和套件

    在进行Web开发时,并非所有的库都适合你的项目,但真正开发的时候,你任然需要依赖一款UI框架.特别在你时间紧迫的时候,它是你忠实的朋友. 他们都是些广泛使用包含不同语言实现的WEB UI框架.今天我就 ...