Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)
关于安装和使用就不说了,属于基本操作了;
我来重点记录一下关于使用前,使用navicat登录的时候报错,1130和2059
查看安装后随机生成的密码: grep 'temporary password' /var/log/mysqld.log
原因:mysql8的密码验证机制变更caching_sha2_password,且密码要求数字+大小写字母+特殊字符(一般是下划线),且长度大于8;
解决方法:变更加密规则,修改密码
1.编辑mysql配置文件:
vim /etc/my.cnf
2.在pdi这行下边添加一行,并保存退出:
skip-grant-tables
3.重启MySQL服务:
service mysqld restart
4.免密登录mysql,密码直接敲回车:
mysql -u root -p
5.选择数据库:
use mysql;
6.查看当前数据库信息,其中表中信息:
host:允许用户登录的 ip ‘位置’ % 表示可以远程;
user:登录数据库用户名;
authentication:用户密码;(5.7.9以后不用password字段了,什么鬼,简单点不好吗?)
plugin:加密方式;
select host, user, authentication_string, plugin from user;
7.修改成我们需要的信息:(可以单独添加一个登录用户,或者直接在root上做文章)
update user set host='%',plugin='mysql_native_password',authentication_string='' where user='root';
8.退出mysql
quit
9.删除 /etc/my.cnf 文件最后的 skip-grant-tables,保存并退出,并重启mysql服务
vim /etc/my.cnf
service mysqld restart
10.重新登录到mysql,并修改密码(注意,上边如果把root的host改成了%,下边这里的localhost要写%)
mysql -u root -p ALTER user 'root'@'localhost' IDENTIFIED BY 'Xpf123@';
搞定!