欢迎访问宙启技术站
智能推送

MySQL root密码忘记后更优雅的解决方法

发布时间:2023-05-14 23:51:57

MySQL是一款常用的关系型数据库管理系统,它的安全性相对较高,因为它在安装时默认会设置一个root用户,并要求设置一个强密码。但是在实际使用中,由于各种原因(例如长时间未使用、多人共用等),有可能会忘记MySQL的root密码,这时候怎么办呢?下面介绍一种更优雅的解决方法。

1. 利用mysqld_safe启动MySQL

首先可以尝试使用mysqld_safe启动MySQL。mysqld_safe是MySQL的一个启动脚本,它可以在MySQL服务崩溃或无法启动时启动MySQL,并且可以不经过身份验证。具体操作如下:

1. 停止MySQL服务:

sudo service mysql stop

2. 利用mysqld_safe启动MySQL:

sudo mysqld_safe --skip-grant-tables &

以上命令中,--skip-grant-tables表示MySQL启动时忽略身份验证。

3. 连接MySQL:

mysql -u root

这时候你会发现已经可以连上MySQL了,并且可以修改root密码。具体命令如下:

use mysql;

update user set authentication_string=password('你的新密码') where user='root';

flush privileges;

exit;

注意:authentication_string是MySQL 5.7之后版本才有的字段,如果使用的是MySQL 5.6或更早版本,请使用password字段替代。

4. 重启MySQL:

sudo service mysql restart

这样就完成了root密码的重置。但是需要注意,启用--skip-grant-tables选项启动MySQL将会使MySQL变得不安全,因为任何人都可以访问MySQL,因此在执行上述命令后应立即恢复原来的MySQL设置。

2. 利用mysql_config_editor重置MySQL的root密码

mysql_config_editor是MySQL 5.6.6以上版本提供的一个工具,它可以帮助我们将MySQL账号密码保存在文件中,以便于我们快速登录数据库。利用这个工具可以很容易地重置MySQL的root密码。具体操作如下:

1. 创建一个 MySQL 配置文件,假设文件名为/my.cnf:

[client]

user=root

password=旧密码

2. 修改文件的权限:

sudo chmod 600 /my.cnf

这是为了确保文件只能被当前用户(即当前用户必须是root)阅读和写入。

3. 重置root密码:

mysql_config_editor set --login-path=local --user=root --password

这时候会提示你输入新密码。输入后即可重置root密码。

4. 测试连接:

mysql --login-path=local

这样就可以测试是否能够成功连接MySQL了。如果能够连接成功,说明重置密码成功了。

总结

上述两种方法都可以重置MySQL的root密码。 种方法虽然比较简单,但是安全性不高,因为需要启用skip-grant-tables选项,任何人都可以访问MySQL,因此使用时需要特别小心。第二种方法相对更加安全,但是需要提前创建一个配置文件,稍微有点繁琐。