MySQL8忘记root密码,解决方案跟mysql5.7是不太一样的。
[root@muzi ~] vim /etc/my.cnf //编辑配置文件[mysqld] //在[mysqld]模块中添加这句
skip-grant-tables//跳过授权表启动,即无密码启动
[root@muzi ~] systemctl restart mysqld //重启mysql服务[root@muzi ~] mysql //此时可以无密码进入mysql> use mysql //使用mysql表
mysql> update user set authentication_string =' ' where user ='root'; //将密码置空。这一步很关键。
mysql> \q //退出mysql
[root@muzi ~] vim /etc/my.cnf //编辑配置文件[mysqld] //在模块[mysqld]中
#skip-grant-tables //将免登陆语句注释掉
[root@muzi ~] service restart mysqld //重启mysql服务[root@muzi ~] mysql -uroot -p //提示输入密码直接回车,因为已经将密码置空了mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mimashi123!'; //修改密码为'mimashimuzi123'
mysql> \q//退出mysql
[root@muzi ~] mysql -uroot -p'mimashimuzi123' //此时用新密码登陆区别就在于5.7.6之前的版本密码字段名是password,且可以使用简单密码。而5.7.6之后的密码字段名是authentication_string,且不可以使用简单密码。mysql8中又废弃了password()方法。
我们这里使用的方法,可能有点取巧,但8.0毕竟较5.7有改动,如果大家有什么别的方法,欢迎指正。