当前位置:网站首页 > Haskell函数式编程 > 正文

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

在经过千辛万苦终于把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; 

可以看到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 修改 root 用户密码
此处先不急着操作,后面还有坑!!

  • 不完善的操作:
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登录了

到此这篇mysql8.XXX版本以后重置密码,修改加密方式解决Authentication plugin 'XXX' cannot be loaded问题的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 海伦公式(附一种证明方法)2024-11-26 10:09:06
  • 电脑技巧:台式机噪音非常大的几个原因以及解决办法2024-11-26 10:09:06
  • 硕士研究生毕业论文书写格式总结2024-11-26 10:09:06
  • 为虾米下载《分布式网站负载压力测试工具》变成了《黄色小说》?2024-11-26 10:09:06
  • 韩式多用动态图(浪漫情侣)2024-11-26 10:09:06
  • 如何开启深色模式【攻略】2024-11-26 10:09:06
  • phpstorm开启debug断点调试模式2024-11-26 10:09:06
  • uniapp和微信小程序修改rich-text里面图片样式2024-11-26 10:09:06
  • centos7下安装FastDFS分布式文件存储系统2024-11-26 10:09:06
  • 登录和注册(六)实名认证——姓名、证件号码、上传证件正反面、只能绑定一个账号 & 证件号码校验之护照格式、身份证号格式2024-11-26 10:09:06
  • 全屏图片