重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则改为caching_sha2_password
10年积累的网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有合作免费网站建设让你可以放心的选择与我们合作。
解决办法:
1、升级客户端
2、把mysql用户登录密码加密规则还原成mysql_native_password:
ALTER USER xxxx IDENTIFIED WITH mysql_native_password BY '新密码';
可以是可以,不过你要先知道这个值是用什么算法加密的,还有就是,有些加密算法是不可逆的,例如md5,sha1,类似这种的加密都是不可逆的,如果是不可逆的就解不了密了。
mysql -uroot -p 输入密码回车后,出现如下图错误。这时候需要我们破解密码。
service mysqld stop //先停止mysql服务。
然后打开mysql配置文件/etc/my.cnf.在【mysqld】下面添加一行代码:skip-grant-tables。这行代码意思就是跳过跳过授权表,即是可以跳过密码验证直接进入数据库。
service mysqld restart //重启mysql数据库。假如不重启的话,不会生效。
mysql -uroot -p //此时直接回车,既可以进入数据库。
出现mysql就说明你已经进入到mysql数据库里了。
进数据库后,
use mysql //选择mysql这个库,因为mysql的root密码存放在这个数据库里。
show tables //查看下mysql库里有哪些表,我们需要操作的用户名密码都在user表里。
desc user //查看下user表有哪些字段
更改root密码。
update user set password=password('123456') where user="root"; //用户选root,可以随便更改成任意密码,我这里设置的123456,password()是mysql密码加密的一个函数。
flush privileges; //刷新下密码,使更改的生效。
exit //退出数据库。
退出数据库,重新登录
mysql -uroot -p //回车输入刚刚更改的密码,就能进去了。
然后再次进入配置文件vi /etc/my.cnf 把skip-grant-tables去掉。