Linux中如何重置Mysql5.7版本root用户密码

在Linux中重置MySQL 5.7的root密码,可以通过以下步骤来完成:

一、停止MySQL服务

首先,你需要停止MySQL服务。这可以通过系统服务管理器(如systemd)来完成。在终端中输入以下命令:

systemctl stop mysqld.service
二、以无密码模式启动MySQL

接下来,你需要以无密码模式启动MySQL,以便能够绕过密码验证来重置root密码。这可以通过修改MySQL的配置文件(通常是/etc/my.cnf/etc/mysql/my.cnf)来实现,或者通过命令行参数来启动mysqld服务。

修改配置文件
使用文本编辑器打开MySQL的配置文件

vim /etc/my.cnf

[mysqld]部分下添加一行

skip-grant-tables

保存并关闭文件。

:wq

重启MySQL服务:

 systemctl start mysqld.service
三、登录MySQL并重置root密码

现在,MySQL正在以无密码模式运行,你可以使用以下命令以root用户身份登录MySQL(不需要密码):

mysql -u root

登录后,选择mysql数据库,并重置root用户的密码。在MySQL 5.7中,password字段已被重命名为authentication_string,并且应该使用ALTER USER语句或UPDATE语句配合PASSWORD()函数(尽管在MySQL 5.7.6及更高版本中PASSWORD()函数已被弃用,但在此上下文中仍可使用,或者直接赋值加密后的密码字符串)来更新密码。然而,为了兼容性和清晰性,这里展示使用UPDATE语句的方法:

FLUSH PRIVILEGES;  
USE mysql;  
UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root';  
FLUSH PRIVILEGES;

注意:由于PASSWORD()函数在MySQL 5.7.6及更高版本中已被弃用,建议直接使用加密后的密码字符串(如通过SELECT PASSWORD('你的新密码');生成,但在重置密码时通常不需要此步骤,因为你可以直接设置加密后的密码字符串),但出于示例目的,这里仍展示了PASSWORD()的用法。实际上,你应该直接设置authentication_string为加密后的密码,或者如果你使用的是MySQL 5.7.6或更高版本,可以使用ALTER USER语句并省略PASSWORD()函数。

然而,更推荐的方法是使用ALTER USER语句,因为它更清晰且不受弃用警告的影响:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';  
FLUSH PRIVILEGES;
四、恢复MySQL的正常启动模式

重置密码后,你需要恢复MySQL的正常启动模式,即移除或注释掉配置文件中添加的skip-grant-tables

再次打开MySQL的配置文件。
注释掉或删除skip-grant-tables行。
保存并关闭文件。
重启MySQL服务:

systemctl restart mysqld.service
五、验证新密码

最后,尝试使用新密码登录MySQL,以确保密码已正确重置:

mysql -u root -p

输入你的新密码进行验证。

但是有时候会遇到这种问题


5391727335189_.pic.jpg

这种问题怎么解决呢
我们先通过无验证的方式去登录一下
然后通过下面的语句查询一下

select User, password_expired, authentication_string, Host from user;

然后设置为不过期

UPDATE user SET password_expired='N' WHERE User='root';
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容