docker安装mysql无法连接的问题记录

 

使用docker安装最新版的mysql:latest,启动容器,在宿主机中连接容器时,报错如下:

[root@iZwz9b78w5ngl55b3jtxm0Z mysql]# mysql -h0.0.0.0 -P5000 -uroot -p
Enter password:
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

使用的是宿主机的mysql客户端连接容器中的mysql服务,不知道是宿主机的问题还是容器的mysql配置问题,折腾了很久,

经查阅资料,发现是mysql新版本使用了新的登陆验证方式,而宿主机的mysql服务使用的是旧版本的验证方式的,所以可知是容器中的mysql服务使用了最新的验证方式,只需进入容器,修改验证方式为mysql_native_password即可。可使用如下命令进行修改:

mysql> update user set plugin='mysql_native_password' where plugin='caching_sha2_password';

 

照如上进行修改之后,重新进行连接,发现不再报之前的错误了,而是无法连接的问题,需要修改容器,允许远程主机进行连接,

[root@iZwz9b78w5ngl55b3jtxm0Z mysql]# mysql -h0.0.0.0 -P5000 -uroot -p
Enter password:
ERROR 1130 (HY000): Host '172.17.0.1' is not allowed to connect to this MySQL server

经查阅资料,报如上错误主要是因为mysql不允许远程连接,经过设置,发现还是无法连接,因此决定使用mysql5.6的镜像,这个问题留待以后解决,而且,随着mysql被oracle收购,越来越多的人转而使用postgre进行web开发,因此在这上面浪费太多时间未必值得。

mysql> update user set host='%' where user='root' and host='localhost';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
mysql> select user,host,plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

通过如上输出,可知mysql谁允许远程连接了的。

你可能感兴趣的:(docker,mysql)