问题描述
在使用 MySQL 数据库时,若不慎忘记 root 账户的登录密码,会导致无法正常登录数据库,影响后续操作。本文将详细介绍如何通过修改配置、重置密码等步骤,解决 MySQL root 密码遗忘的问题。
问题解决
修改配置文件,添加跳过权限验证的参数
首先需要修改 MySQL 的配置文件,临时跳过权限验证,以便无密码登录数据库。
使用 vim 编辑器打开 MySQL 配置文件:
vim /data/mysql/conf/my.cnf
在配置文件的[mysqld]模块下添加以下参数(用于跳过权限验证):
skip-grant-tables
重启 MySQL 服务,使配置生效
添加参数后,需重启 MySQL 服务,让新配置生效:
/etc/init.d/mysql.server restart
以免密码方式登录 MySQL
配置生效后,可直接无密码登录 root 账户:
mysql -uroot -p
执行上述命令后,系统会提示输入密码,此时直接按回车(无需输入密码)即可登录。
清空 root 账户原密码(解决直接改密报错问题)
登录后若直接使用ALTER USER命令修改密码,会因权限验证被跳过而报错。因此需先通过修改用户表,将 root 密码设为空:
update mysql.user set authentication_string = '' where user = 'root' and host='localhost';
移除跳过权限验证的参数,重启服务
完成密码清空后,需恢复 MySQL 的权限验证机制:
重新打开配置文件,删除之前添加的skip-grant-tables参数:
vim /data/mysql/conf/my.cnf
(在 vim 编辑模式下,定位到该参数行,按dd删除)
再次重启 MySQL 服务,使配置恢复:
/etc/init.d/mysql.server restart
使用空密码登录,重新设置 root 密码
此时 MySQL 已恢复权限验证,可使用空密码登录 root 账户:
mysql -uroot -p
(输入密码时直接按回车,因步骤 4 已将密码设为空)
登录后,通过ALTER USER命令设置新密码(以dup81Gcda2为例):
alter user user() identified by 'dup81Gcda2';
验证新密码是否生效
使用新密码重新登录 MySQL,确认密码修改成功:
mysql -uroot -p
输入刚设置的新密码dup81Gcda2,若能正常登录,则说明问题已解决。
通过以上步骤,即可成功重置 MySQL root 账户的密码,恢复数据库的正常登录。