大家好,今天小编来为大家解答以下的问题,关于高效解决Docker中MySQL远程连接问题:1251客户端不支持...,这个很多人还不知道,现在让我们一起来看看吧!
运行的镜像称为容器,容器启动速度非常快。
搜狗截图20180303145531.png
2、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用于保存各种打包的软件镜像;
docker镜像(Images):软件打包镜像;放置在docker仓库中;
docker容器(Container):镜像启动后的实例称为容器;容器是一个应用程序或一组独立运行的应用程序
搜狗截图20180303165113.png Docker使用步骤:
1)、安装Docker
2)去Docker仓库找到这个软件对应的镜像;
3)使用Docker运行这个镜像,这个镜像会生成一个Docker容器;
4)容器的启动和停止就是软件的启动和停止;
3、在linux虚拟机上安装docker
步骤:
1.检查内核版本,必须是3.10以上
uname -r
2.安装docker
百胜安装码头工人
3.输入y确认安装
4.启动docker
[root@localhost ~]# systemctl 启动docker
[root@localhost ~]# docker -v
Docker 版本1.12.6,内部版本3e8e77d/1.12.6
5.开机启动docker
[root@localhost ~]# systemctl 启用docker
创建从/etc/systemd/system/multi-user.target.wants/docker.service 到/usr/lib/systemd/system/docker.service 的符号链接。
6.停止docker
systemctl stop docker4、Docker常用命令操作
1)、镜像操作
操作命令说明检索docker search关键字eg:docker search redis 我们经常去docker hub检索镜像的详细信息,比如镜像的TAG。 pull docker pull 镜像名称:tag:tag 可选,tag代表标签,多为软件版本,默认为最新列表docker images 查看所有本地镜像删除docker rmi image-id 删除指定本地镜像https://hub.docker.com/
2)、容器操作
软件镜像(QQ安装程序)—运行镜像—生成容器(运行软件,运行QQ);
步:
1. 搜索图片
[root@localhost ~]# docker 搜索tomcat
2. 拉取镜像
[root@localhost ~]# docker pull tomcat
3.根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
4. docker ps
查看正在运行的容器
5.停止正在运行的容器
docker停止容器id
6.查看所有容器
docker ps -a
7.启动容器
docker启动容器id
8. 删除容器
docker rm 容器ID
9.启动tomcat并进行端口映射
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:在后台运行
-p: 将主机的端口映射到容器中的端口主机端口: 容器内的端口
10. 为了演示目的,Linux 防火墙被简单地关闭。
服务防火墙状态;查看防火墙状态
servicefirewalldstop:暂时关闭防火墙
11.查看容器的日志
docker 日志容器名称/容器ID
更多命令请参见
https://docs.docker.com/engine/reference/commandline/docker/
可以参考各个镜像的文档
3)、安装MySQL示例
//下载mysql
docker 拉mysql
//启动mysql
[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
容器ID 图像命令创建状态端口名称
b874c56bec49 mysql "docker-entrypoint.sh" 4秒前最多3秒3306/tcp mysql01做了端口映射[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
容器ID 图像命令创建状态端口名称
ad10e4bc5c6a mysql "docker-entrypoint.sh" 4秒前上涨2秒0.0.0.0:3306-3306/tcp mysql02 其他几个高级操作
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
将主机的/conf/mysql文件夹挂载到mysqldocker容器的/etc/mysql/conf.d文件夹
要更改mysql配置文件,只需要将mysql配置文件放在自定义文件夹(/conf/mysql)中
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定mysql的一些配置参数
## 设置mysql服务器的编码
docker run -p 3307:3306 --name mysql03 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
----------
mkdir -p /conf/mysql ## 创建多级目录
ls /conf/## 查看指定目录下所有文件
4、远程连接docker中的MySQL遇到的问题(1251)
错误截图:TIM 图片20181129105958.png 原因:mysql 8.0 默认使用caching_sha2_password 认证机制;客户端不支持新的加密方法。
解决方案:
修改用户(root)的加密方式
步骤:
1、进入mysql容器内部
[root@localhost ~]# docker exec -it mysql01 bash ## mysql01 是容器的别名。您还可以使用容器的id 代替
2、登录mysql
root@e285125c99d6:/# mysql -u root -p
输入密码:
欢迎使用MySQL 监视器。命令以; 结尾或g。
您的MySQL 连接ID 是11
服务器版本: 8.0.13 MySQL社区服务器-GPL
版权所有(c) 2000, 2018,Oracle 和/或其附属公司。版权所有。
Oracle 是Oracle Corporation 和/或其公司的注册商标
附属机构。其他名称可能是其各自的商标
业主。
输入“帮助”;或“h”寻求帮助。键入“c”以清除当前输入语句。
3、设置用户配置项
1)查看用户信息
mysql从mysql.user 中选择主机、用户、插件、authentication_string;
+------------+--------------------------------+-------------------- ---+-------------------------------------------------------- ------ ----------------------------------------+
|主持人|用户|插件|身份验证字符串|
+------------+--------------------------------+----------------- ---+-------------------------------------------------------- ------ ----------------------------------------+
| % |根|缓存_sha2_密码| $A$005$HF7;krfwhkKHp5fPenQm4J2dm/RJtbbyjtCUVdDCcboXQw3ALxsif/sS1 |
|本地主机| mysql.infoschema |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机| mysql.session |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机| mysql.sys |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机|根| mysql_native_password | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------+--------------------------------+----------------- ---+-------------------------------------------------------- ------ ----------------------------------------+备注:host为%,表示ip不限制。 localhost表示本机使用了mysql_native_password以外的插件,所以需要修改密码。
2)修改加密方式
更改用户"root"@"%" 通过mysql_native_password BY "123456" 进行识别; ### 123456 mysql登录密码
同花顺特权;然后查看用户信息
mysql从mysql.user 中选择主机、用户、插件、authentication_string;
+------------+--------------------------------+----------------- ---+-------------------------------------------------------- ------ ----------------------------------------+
|主持人|用户|插件|身份验证字符串|
+------------+--------------------------------+----------------- ---+-------------------------------------------------------- ------ ----------------------------------------+
| % |根| mysql_native_password | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
|本地主机| mysql.infoschema |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机| mysql.session |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机| mysql.sys |缓存_sha2_密码| $A$005$这是一个绝不能使用的有效盐和密码的组合|
|本地主机|根| mysql_native_password | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
关于高效解决Docker中MySQL远程连接问题:1251客户端不支持...到此分享完毕,希望能帮助到您。
【高效解决Docker中MySQL远程连接问题:1251客户端不支持...】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章终于帮我看透了,我好久没见过关于 Docker 部署 MySQL 和这个错误码的详细讲解。
有18位网友表示赞同!
远程连接数据库确实是个常考点,希望能通过这篇教程解决1251问题的烦恼。
有17位网友表示赞同!
分享这种教程真的太棒了!很多新手在Docker部署过程中都会遇到各种挑战,这篇文章能指点迷津啊~
有17位网友表示赞同!
我之前也遇到过这个问题,看来确实要检查环境变量设置呀 !
有11位网友表示赞同!
有图文详解说明的教程比较好理解,这样更容易把知识点掌握。
有13位网友表示赞同!
Docker真是个好工具,但有时候配置的确需要细心关注才能避免问题!
有20位网友表示赞同!
解决这个问题还挺考验学习能力啊!感谢分享这份宝贵经验!
有18位网友表示赞同!
看标题就知道,这篇文章要解决远程连接MySQL遇到的问题。希望讲解简洁易懂!
有15位网友表示赞同!
做开发工作确实离不开数据库,Docker部署更方便,希望能学到一些新技巧!
有5位网友表示赞同!
之前也试过远程连接MySQL,很多细节都不知道如何设置,这篇教程希望能介绍到位!
有12位网友表示赞同!
学习新的技术知识总是很有挑战性,感谢作者分享文章!
有18位网友表示赞同!
我对Docker的了解并不多,希望这篇文章能让我进一步了解它的应用场景。
有9位网友表示赞同!
遇到问题真是头疼啊!还好现在这种教程很丰富了!
有8位网友表示赞同!
远程连接数据库确实很重要,一篇关于MySQL问题的解决方法分享总是很有价值的!
有18位网友表示赞同!
Docker部署 MySQL 效率更高,而且安全性也更高吧?
有9位网友表示赞同!
这篇文章内容很有用,我相信很多人都会受益!
有17位网友表示赞同!
喜欢这种贴近实际需求的教程!
有15位网友表示赞同!
分享这类文章真是太棒了!可以帮助很多朋友解决实际问题。
有5位网友表示赞同!
学习新的技术和工具总能提升自己的竞争力!
有13位网友表示赞同!
感谢作者分享这份宝贵的经验,希望能深入了解Docker部署MySQL的细节。
有9位网友表示赞同!