修改 Docker-MySQL 容器的 默认用户加密规则
背景介绍
今天开始做集成测试,需要把程序和环境重新部署在新的服务器上。项目的环境都是基于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 容器的 默认用户加密规则的更多相关文章
- docker mysql容器的安装使用
docker拉取镜像的命令为 docker pull image[:TAG] 如果我们想安装的mysql版本不是最新的版本,则需要填充TAG,如果不带上TAG,则默认安装的为最新版本,虽然可以通过do ...
- 修改Docker中容器的时间和宿主主机时间一致
修改Docker容器的时间和宿主时间一致 在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 DOCKER容器的时间 世界 ...
- win10修改Docker Desktop Installer的默认安装目录
Docker Desktop Installer软件默认安装会装在C:\Program Files\Docker的目录下,默认是不能修改的,但是我们可以通过设置软链接的方式把安装默认弄到其他盘 我们先 ...
- docker mysql 容器报too many connections 引发的liunx磁盘扩容操作
症状每次删除mysql容器重启没两分钟又报标题错 df -h 命令查看各个挂载空间应用情况发现root home var 三个文件目录挂载的空间满了 网上百度了一下liunx磁盘扩容操作,fdisk ...
- Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效
我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...
- Docker】如何修改Docker的默认镜像存储位置
江湖有多大,坑就有多多……我使用的服务器, 系统盘根目录只有20G, 默认Docker 的镜像文件是安装在/var/lib/docker 目录下的, 这样的话我根本装不了太多的镜像,之前遇到一种情况就 ...
- docker 创建.netcore2.2 api容器 以及连接mysql容器
1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker: Docker for Windows docker在windows上安装完毕之后可以看到 2]拉取 ...
- 修改docker image存放位置
修改镜像和容器的默认存放路径 指定镜像和容器存放路径的参数是--graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可.刚好有个300g盘的挂在/data目录上,所以在这个 ...
- docker mysql配置挂载到卷
docker--将mysql配置挂载到卷 1.首先在根目录创建两个文件夹,其中config文件夹中创建my.cnf配置文件.data文件夹存放数据文件,一定要为空. /docker/mysql/con ...
随机推荐
- gradle仓库配置
Android Studio使用Gradle构建app.Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件. 支持的类型有如下几种: 类型 说明 Maven cen ...
- jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...
- shell 脚本实战笔记(9)--linux自动批量添加用户
前言: 添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现? 这篇短文, 简单讲解一些思路, 尽可能地涉及周边的一些知识点. 不光是运维人员会面临这个问题, ...
- ACM 常见词汇
rectangular 美: [rek'tæŋɡjələr] 英: [rek'tæŋɡjʊlə(r)] adj. 矩形的:成直角的 grid 美: [ɡrɪd] 英: [ɡrɪd] n. ...
- POJ 2407:Relatives(欧拉函数模板)
Relatives AC代码 Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16186 Accept ...
- LeetCode-Microsoft-Populating Next Right Pointers in Each Node
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- LG3377 【模板】左偏树(可并堆)
好博客 1 2 上面那个用数组写的跑的快,且便于封装,就用他的代码了. 代码 #include<cstdlib> #include<cstdio> #include<cm ...
- OASGraph 转换rest api graphql 试用
创建rest api lb4 appdemo 参考提示即可 安装 OASGraph git clone https://github.com/strongloop/oasgraph.git cd oa ...
- 一个不错的nomad raw_exec && docker 运行例子(集成访问网关)
github 上有一个关于nomad up && runing 不错的项目,包含了一个tomcat 应用的部署,以及基于容器运行的网关服务 项目参考地址 https://github. ...
- Linux性能测试工具安装全集
stress 下载地址:http://people.seas.harvard.edu/~apw/stress/ 一.stress工具安装:1.获取stress源码安装包(stress-1.0.4.ta ...