Windows系统Mysql8.0 重置root密码
- Windows系统Mysql8.0+重置root密码
- 按照网上教程出现如下提示语法错误
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 '('root'), password_last_changed=now() where user='root'' at line 1
最近使用MySQL时发现忘记了自己的 sql密码,导致无法连接
从网上查询教程多次尝试后总结本文(亲测有效)
视频链接:MySQL密码忘了解决方案_哔哩哔哩_bilibili
上面视频中up主的MySQL版本是mysql5.7.39 ,步骤非常详细大家可以跟着一步一步来,
直到修改密码的命令语句时出现报错 ,提示我们语法错误(本文开头的错误提示)
提示语法错误解决办法 :
这是因为,8.0以前的版本都是这样子修改密码的:
use mysql;
update user set authentication_string = password(“root”) where user = “root”;
你会发现系统一直提示输入的语法有问题,是因为8.0版本已经废弃了password函数,
我们可以这样子进行修改:
alter user 'root'@'localhost' identified by 'newpassword';
或者
alter user 'root'@'%' identified by 'newpassword';
localhost或%取决于你对root用户设置的登录权限,localhost表示只能本机登录root用户,%表示可以使用其他机器远程登录root用户。我这里使用的是第一种。
执行这个语句的时候,可能会出现这个问题:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
你只需要执行这步:
flush privileges;
再重新修改密码即可:
alter user 'root'@'localhost' identified by 'newpassword';
或者
alter user 'root'@'%' identified by 'newpassword';
如果修改成功,记得刷盘,进行持久化操作:
flush privileges;
之后,退出
exit
或者
quit
另:
注意:网络上有的教程提到8.0要求用户新密码不能太简单,引用如下:
值得注意的是,新密码不能太简单,8.0的密码规则是不少于8位,且含有小写字母、数字、大写字母、特殊字符,所以你可以这样子设置:
alter user 'root'@'localhost' identified by 'Root123@#';
我的MySQL版本就是8.0但是我设置密码为 root 并未出现任何报错且可正常使用,
在这里指出这种说法是预防大家如果出现密码格式问题有参考依据
ps:毕竟大多数学习阶段的人习惯于 root 等简单密码。
(亲测方法可行)
参考文章:MySQL8.0版本修改root密码_mysql8.0修改root密码_蔷薇尖的风的博客-CSDN博客