忘记mysql登录密码是很常见的操作,今天讲一下linux centos7下mysql8.0版本修改密码的方法。
踩坑
网上很多文章说的是mysql5.x版本的修改密码方法,按照这些方法做就会遇到坑了。
忘记密码了,首先尝试修改mysql的配置文件/etc/my.cnf,有的人安装目录可能不太一样,配置文件会是/etc/mysql/my.cnf或者其他的目录下。
在[mysqld]下面添加一行,可以跳过密码登录
1 | skip-grant-tables |
重启mysqld服务
1 | service mysqld restart |
输入mysql回车进入mysql命令行,尝试执行
1 | update user set password=password("123456") where user="root"; |
直接就报语句错误了,看来可能是password函数有问题。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(“123456”) where user=”root”‘ at line 1
接着尝试另一个方法。
1 | mysql> ALTER USER 'root'@'*' IDENTIFIED WITH mysql_native_password BY '123456' |
也报错,–skip-grant-tables模式下,不能运行这条语句。
ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement
于是我先查查user表的数据。
1 | select user, password from user |
发现user表中根本没有password这个字段,上网查了后发现只有authentication_string,在mysql5.7.9后就废弃了password字段和password()函数。
需要先将authentication_string设置为空
1 | update user set authentication_string = ‘’ where user = ‘root’; |
然后退出mysql,删除/etc/my.cnf的skip-grant-tables,重启mysqld服务。
接着尝试登录mysql
1 | mysql -uroot -p |
直接回车登录mysql,再使用alter修改用户密码
1 | alter user ‘root’@’%’ indentified by ‘123456’; |
提示成功!!!
扫一扫下方小程序码或搜索Tusi博客
,即刻阅读最新文章!