mysql8.XXX版本以后重置密码,修改加密方式解决Authentication plugin ‘XXX’ cannot be loaded问题

mysql8.XXX版本以后重置密码,修改加密方式解决Authentication plugin ‘XXX’ cannot be loaded问题在经过千辛万苦终于把 mysql8 装到 linux 上 发现登录不知道密码 很尴尬这里需要将密码重置一下 但是都不知道密码是啥怎么登录 mysql 操作修改呢 还是回到 etc my cnf 增加 skip

大家好,欢迎来到IT知识分享网。

在经过千辛万苦终于把mysql8装到linux上,发现登录不知道密码,很尴尬

这里需要将密码重置一下.但是都不知道密码是啥怎么登录mysql操作修改呢?

方法一

grep 'temporary password' /var/log/mysqld.log
查看初始化生成的密码

方法二

还是回到/etc/my.cnf
增加skip-grant-tables

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dABGLJ4C-1572230880117)(https://i.imgur.com/WtcO99d.png)]
重启mysql
systemctl restart mysqld

这样就可以跳过登陆的密码了,但是能操作的也很有限,所以还是需要密码

然后我们mysql -uroot -p
直接回车不输入任何东西

在这里插入图片描述

use mysql; select host, user, authentication_string, plugin from user; 

表格介绍:

  • host: 允许用户登录的 ip ‘位置’ % 表示可以远程;
  • user: 当前数据库的用户名;
  • authentication_string: 用户密码(在mysql 5.7.9以后废弃了password字段和password()函数);
  • plugin: 密码加密方式;

尤其是plugin,这个跟mysql8之前的版本不一样,是一个挖坑点.(感觉自从mysql被oracle收购后为了数据安全后完全不管人性化了)

我们先把密码去掉

update user set authentication_string='' where user='root'; quit; 

然后我们再vi /etc/my.cnf注释掉或删除skip-grant-tables

重启mysql服务

service msqld restart 

再重新登陆

mysql -u root -p 

回车直接进去

  • 不完善的操作:
ALTER user 'root'@'localhost' IDENTIFIED BY ''; 
  • 完善一点的操作:(原因在下面)
update user set Host='%' where User='root'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; # password换成你的密码 

注意这个密码如果设置的比较简单,例如 等等,会设置不成功,它会提示你设置的密码太简单,最好设置成大写字母、数字、符号的组合。这个也是新版mysql的一个特点,MySQL 5.7.6 以后废弃了 user 表中的 password 字段和 password() 方法,所以使用旧的方法去重置密码对 mysql 8.0 是不行的!

方法:

SHOW VARIABLES LIKE 'validate_password%'; 

在这里插入图片描述
将其安全策略改为LOW就可以了

set global validate_password.policy = LOW; 

下面解释为什么要用完善一点的操作
现在在本机上登陆是没有问题的,但是如果在其他主机上连接过来,会发现连不上

Host xxxx is not allowed to connect to this MySql server

这个可以往上看看user那个表,host里面都是清一色的localhost,也就是只有localhost才能pass,所以我们需要将root这个host改成通配符%,让所有的主机都能登陆

在本机上登陆mysql , 修改host为百分号

use mysql; update user set Host='%' where User='root'; 

在这里插入图片描述

Authentication plugin 'caching_sha2_password' cannot be loaded

这是因为mysql把密码加密方式改了,而很多数据库软件目前都还没反应过来,还是用的以前的密码认证,所以通不过,没办法,只能先把加密方式换成我们以前版本的

登录mysql,现在再来改密码

 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; # password换成你的密码 FLUSH PRIVILEGES; 

再看看user表

# 查看一下现在的user表 select host, user, authentication_string, plugin from user; 

在这里插入图片描述
可以看到plugin那我们已经换过来了

现在就可以正常的使用小海豚或者navicat Premium登录了

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110996.html

(0)
上一篇 2026-01-27 21:00
下一篇 2026-01-27 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信