欢迎来到代码驿站!

Mysql

当前位置:首页 > 数据库 > Mysql

一次docker登录mysql报错问题的实战记录

时间:2022-07-04 14:07:20|栏目:Mysql|点击:

起因

最近想再重温重温MySQL,于是就打开VMware登上了我的小破机。想着之前在docker上面已经装过MySQL了,就尝试着登录了一下,

进入mysql服务

docker exec -it mysql bash

输入命令

mysql -uroot -p

输入密码

想象的Welcome to the MySQL没有到来,反而是

???密码明明没有错,登不上去.....

之后打开Navicat,测试远程登录,?登上去了,Navicat可以正常使用。

那为什么命令行却登不上去?

找了好多资料才知道原来是MySQL密码加密插件的原因,MySQL最新的8.0.x
版本使用的时默认的caching_sha2_password插件,而MySQL5.x的版本使用的是mysql_native_password插件。

使用命令行明文密码登录的时候,走的是mysql_native_password,数据库中存的是caching_sha2_password加密过的密码,所以两者自然不匹配。

解决方法

可以先通过以下SQL语句查询确认。

select user, plugin from mysql.user;

在通过以下SQL进行修改:

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

语句中的用户:root,host:%,密码找按实际情况修改。

解决之后,再次登录MySQL,就可以登进去了。

附:docker下进入mysql命令行

[root@VM_0_8_centos ~]# docker exec -it 89c5b9c81e74  bash
root@89c5b9c81e74:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 141019
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

总结

上一篇:MySQL的存储函数与存储过程的区别解析

栏    目:Mysql

下一篇:一文了解MySQL二级索引的查询过程

本文标题:一次docker登录mysql报错问题的实战记录

本文地址:http://www.codeinn.net/misctech/206820.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有