起因
最近想再重温重温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,就可以登进去了。
评论区