MySQL作为常用的关系型数据库,root账户是最高权限的管理账户,一旦忘记密码会直接影响数据库的管理操作,下面介绍不同系统下的重置方法。

Windows系统下重置MySQL root密码
步骤1:停止MySQL服务
首先需要关闭正在运行的MySQL服务,可以通过命令行执行以下命令:
net stop mysql
如果提示服务名无效,可以先查看本地服务列表确认MySQL服务的实际名称,再替换命令中的mysql字段。
步骤2:跳过权限验证启动MySQL
进入MySQL的安装目录下的bin文件夹,执行以下命令启动MySQL服务并跳过权限检查:
mysqld --console --skip-grant-tables --shared-memory
执行后当前命令行窗口会保持运行状态,不要关闭这个窗口,另外打开一个新的命令行窗口继续操作。
步骤3:无密码登录并修改密码
在新的命令行窗口中进入MySQL的bin目录,执行登录命令:
mysql -u root
登录成功后依次执行以下SQL语句修改密码:
-- 切换到mysql系统数据库
USE mysql;
-- 修改root密码,MySQL 5.7及以上版本密码字段为authentication_string
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
-- 刷新权限配置
FLUSH PRIVILEGES;
-- 退出数据库
EXIT;
如果是MySQL 5.6及以下版本,密码字段为password,可以将上述UPDATE语句替换为:
UPDATE user SET password=PASSWORD('new_password') WHERE User='root';
步骤4:重启MySQL服务
关闭之前跳过权限验证的命令行窗口,然后正常启动MySQL服务:
net start mysql
此时就可以使用新设置的密码登录root账户了。
Linux系统下重置MySQL root密码
步骤1:停止MySQL服务
根据Linux系统的服务管理工具执行对应命令:
# 使用systemctl的系统 sudo systemctl stop mysqld # 使用service的系统 sudo service mysql stop
步骤2:跳过权限验证启动MySQL
执行以下命令启动MySQL并跳过权限检查:
sudo mysqld_safe --skip-grant-tables &
命令执行后MySQL会在后台运行,同样新开一个终端窗口继续操作。
步骤3:无密码登录并修改密码
执行以下命令无密码登录root账户:
mysql -u root
登录后执行以下SQL语句修改密码:
USE mysql;
-- MySQL 5.7及以上版本
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-- 如果是MySQL 5.6及以下版本,执行以下语句
-- SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
FLUSH PRIVILEGES;
EXIT;
步骤4:重启MySQL服务
先结束跳过权限验证的MySQL进程,再正常启动服务:
# 结束进程 sudo pkill mysqld # 正常启动服务 sudo systemctl start mysqld # 或者 sudo service mysql start
注意事项
- 重置密码操作需要服务器的最高权限,Windows需要管理员身份运行命令行,Linux需要sudo权限。
- 新密码建议设置包含大小写字母、数字和特殊字符的组合,提升数据库安全性。
- 操作完成后要确认MySQL服务正常运行,并且新密码可以正常登录,避免影响后续业务使用。
- 如果是生产环境的数据库,操作前建议先备份重要数据,避免操作失误导致数据丢失。