如何恢复root密码
在使用linux系统和mysql数据库时,我们可能会遇到忘记root密码的情况。这时,如果没有办法找回密码,就只能重置密码或重新安装系统。然而,这些做法都有一定的风险,可能导致数据丢失或操作不当而影响系统稳定性。在此,我们将介绍两种安全、简便且可行的方法来恢复mysql root密码。
方法一:使用mysqld_safe启动mysql
如果我们没有设置跳过认证方式,并且mysql安装的版本为5.7.6及以上时,可以通过mysqld_safe启动mysql,并且跳过了密码认证。接下来的步骤如下:
1.停掉mysql服务。
使用以下命令停止mysql服务:
systemctl stop mysql2.使用mysqld_safe启动mysql。
使用以下命令启动mysqld_safe,并跳过密码校验:
mysqld_safe --skip-grant-tables &3.验证mysql是否已经启动。
使用以下命令验证mysqld_safe已经启动:
ps -ef | grep mysql如果已经启动,则输出如下:
root 3810 1 0 09:52 pts/0 00:00:00 mysqld_safe --skip-grant-tables
mysql 3962 3810 0 09:52 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --pid-file=/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
其中,“--skip-grant-tables”就是跳过密码认证的命令。
4.登录mysql并修改密码。
使用以下命令登录mysql:
mysql -u root如果出现以下提示:
error 1045 (28000): access denied for user 'root'@'localhost' (using password: no)
则表示跳过认证成功。详情可见错误代码意义。
使用以下命令修改密码:
mysql> update mysql.user set authentication_string=password('new_password') where user='root' and host='localhost';
mysql> flush privileges;
mysql> quit
在修改密码时,需要把“new_password”替换成你想要的新密码。
5.停止mysqld_safe。
使用以下命令停止mysqld_safe:
systemctl stop mysql6.使用新密码登录mysql。
使用以下命令登录mysql:
mysql -u root -p当出现以下提示时,即表示修改成功:
enter password:(输入新密码即可登录)
方法二:使用mysql_config_editor工具
如果我们有mysql_config_editor工具,则可以通过该工具来修改密码。mysql_config_editor是mysql 5.6及以上版本中新增的一个命令行实用程序。使用mysql_config_editor可以管理mysql凭证文件和组,以及加密和解密凭证信息。以下是具体步骤:
1.启动mysql_config_editor。
使用以下命令启动mysql_config_editor:
mysql_config_editor set --login-path=local --user=root --password这里的“local”指的是这个凭证组的名字,可以根据自己的喜好更改。
2.输入新密码。
在执行上一步命令后,终端会等待输入密码。只需输入新密码即可。
3.验证新密码是否生效。
使用以下命令验证密码是否成功修改:
mysql --login-path=local -e select user,host from mysql.user;如果可以正常显示user和host信息,则表示修改成功。
总结
以上就是恢复mysql root密码的两种方法。通过这两种方法,我们可以简单、快速地解决mysql root密码丢失的问题。
需要注意的是,在恢复密码之后,为了系统的安全性,我们需要更改root密码,并进行加强设置。同时,我们还需要避免简单密码、重复使用密码等安全隐患。这样,就能确保我们的数据和系统的完整性和安全性。
以上就是linux mysql 忘记root的详细内容。