赞
踩
有时候我们需要修改MySQL的root用户密码,方便我们后续的登录操作,但是应该怎么修改呢?接下来我们一起操作一下。
首先我们要知道MySQL8.0版本已经和之前版本不太一样,比如说8.0版本移除了password字段,添加了authentication_string字段,我们修改密码就是在这个字段进行。
这时候有两种情况,一种情况是知道root用户密码,直接登录即可;另一种情况就是不知道root用户密码,那么我们需要在my.cnf配置文件中添加skip-grant-tables命令,具体操作看我之前的博客,链接如下:
(10条消息) Linux中mysql忘记密码,想通过my.cnf修改,但是my.cnf文件找不到_蔷薇尖的风的博客-CSDN博客
我们知道8.0之前的版本,都是这样子修改密码的:
use mysql;
update user set authentication_string = password(“root”) where user = “root”;
你会发现系统一直提示输入的语法有问题,是因为8.0版本已经废弃了password函数,那么我们可以这样子修改吗?
update user set authentication_string = ‘新密码’ where user = “root”;
flush privileges;
不可以。你会发现,修改之后,根本没办法使用‘新密码’登录root用户,这是因为authentication_string字段下只能是mysql加密后的41位字符串密码,所以我们可以这样子进行修改:
alter user 'root'@'localhost' identified by 'newpassword';
或者
alter user 'root'@'%' identified by 'newpassword';
localhost或%取决于你对root用户设置的登录权限,localhost表示只能本机登录root用户,%表示可以使用其他机器远程登录root用户。
值得注意的是,新密码不能太简单,8.0的密码规则是不少于8位,且含有小写字母、数字、大写字母、特殊字符,所以你可以这样子设置:
alter user 'root'@'localhost' identified by 'Root123@#';
执行这个语句的时候,可能会出现这个问题:
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 'Root123@#';
设置好之后,记得刷盘,进行持久化操作:
flush privileges;
之后,退出
exit
或者
quit
我们把my.cnf里面刚刚添加的内容注释掉:
[mysqld]
skip-grant-tables
变成
#[mysqld]
#skip-grant-tables
然后再重启MySQL:
service mysql restart
使用命令:
mysql -uroot -p
再输入密码。
最后大功告成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。