Docker教程大全(三):安装Mysql,并解决初次安装后连接报1251问题

7 篇文章 1 订阅
2 篇文章 0 订阅

1.下载Mysql镜像

不指定版本号,默认下载最新的版本:

[root@localhost ~]# docker pull mysql

也可以指定特定版本:

[root@localhost ~]# docker pull mysql:5.6.48

2.下载完毕,查看镜像信息情况

[root@localhost ~]# docker images

3.通过镜像,创建容器并设置端口和密码

[root@localhost ~]# docker run -p 3306:3306 --name Mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

上面Mysql01是自定义的容器名字,可以随便起,至于其他前面3306是运行端口号,后面123456是mysql的root密码,照此写即可,当然你也可以用其他密码,但千万要记住密码,后面还要用。

回车确定运行后显示一长串字母数字,即容器创建启动成功。

4.查看容器运行状态

[root@localhost ~]# docker ps -a

显示mysql已经运行。

但这就好了吗?还没,如果此时用Navicat连接一下报 1251:Client does not support authentication protocol requested  by server;consider upgrading MySQL client 错误,如下:

这是因为Mysql安装时候的密码加密方式不匹配,所以还要进入mysql重新修改密码。

5.进入docker刚安装的mysql中修改密码

直接进入docker中mysql容器:

[root@localhost ~]# docker exec -it Mysql01 bash

上面Mysql01是我上面第3步自定义起的mysql容器名字,具体看你自己情况

进入后:

选择root账号密码登录:

root@bd6719c88477:/# mysql -uroot -p

输入密码123456,linux默认不显示密码明文,直接输入回车确定即可登录。

后面操作较多,所有命令如下,参照下面逐行操作:

mysql> use mysql;

赋予任何主机访问数据的权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

刷新MySQL的系统权限相关表 

mysql> FLUSH PRIVILEGES; 

比较新版本的MySQL采用新的加密方式,我们重新修改密码,新密码依旧为123456:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

再刷新MySQL的系统权限相关表

mysql> FLUSH PRIVILEGES;

以上操作完成后,再来连接Navicat,连接成功!就可以使用mysql了。

                                                                                                                                                                                                           

额外补充:有些同学反应在以上操作后,发现还是无法远程连接mysql,很可能是root账号指定的host限制问题,应该改为%符号。

Host指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为192.168.1.** 的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故。

修改办法:

查找用户host
mysql> select host, user from user;

我这个地方已经是%符号无需修改,如果你的不是这样,如下操作:

mysql> update user set host='%' where user='root';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值