1.在[mysqld3303]下加skip-grant-tables参数,然后重启mysql
2.执行 mysql -uroot -p -S /tmp/mysql_3303.sock,
Enter password: (这里直接回车就进去了)
3.执行修改密码语句,使用update语句先清空authentication_string字段(skip-grant-tables模式下无法直接改密码)
update user set authentication_string='' where user='root';
PS:
以下两种方式在mysql8.0版本都无法使用了
update mysql.user set authentication_string=password("123") where user='root';
mysql -uroot -p123.com -e "use mysql;update user set authentication_string=password('456') where user='root';"
4.再输入exit退出mysql命令行,再删掉my.cnf配置文件中的skip-grant-tables那行,并且重启MySQL服务,然后再次进入MySQL命令行。
还是执行mysql -uroot -p -S /tmp/mysql_3303.sock,密码输入时直接回车就进来了。执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
5.提示:密码要8位及以上,有大小写,有特殊字符,否则不符合密码策略。
刷新MySQL的系统权限相关表,以防止更改后拒绝访问;
flush privileges;
6. 报 Host '' is not allowed to connect to this MySQL server ” 错误 时
update mysql
update mysql.user set host= '%' where user = 'root';
flush privileges;
user set host= '%' where user = 'root';