在CentOS系统中忘记MySQL密码是一个常见问题,但通过正确的步骤可以安全地重置密码,本文将详细介绍解决这一问题的完整流程,包括不同版本MySQL的适用方法、注意事项以及常见问题的解答。

准备工作
在开始操作前,请确保您具有root权限或sudo权限,并且已经停止MySQL服务,建议提前备份重要数据,以防操作过程中出现意外数据丢失,对于MySQL 5.7及以上版本,密码存储在mysql.user表的authentication_string字段中;而5.6及以下版本则存储在password字段中,这一点需要特别注意。
重置MySQL密码的步骤
停止MySQL服务
通过命令行停止MySQL服务,使用以下命令之一:
sudo systemctl stop mysqld # 适用于CentOS 7及以上版本 sudo service mysqld stop # 适用于CentOS 6及以下版本
停止后,可以通过ps aux | grep mysql确认进程已完全终止。
跳过权限表启动MySQL
以安全模式启动MySQL,使其跳过权限表验证:
sudo mysqld_safe --skip-grant-tables &
该命令会在后台运行MySQL,允许无密码登录,启动后,可以通过mysql -u root直接进入命令行界面。

更新root密码
登录后,执行以下SQL命令更新密码,注意,对于不同版本的MySQL,语法略有差异:
- MySQL 5.7及以上版本: FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; 
- MySQL 5.6及以下版本: FLUSH PRIVILEGES; UPDATE mysql.user SET password=PASSWORD('NewPassword123!') WHERE User='root';完成后,执行 FLUSH PRIVILEGES使更改生效。
重启MySQL服务
退出MySQL命令行后,停止并重启MySQL服务以恢复正常模式:
sudo pkill mysqld sudo systemctl start mysqld
使用新密码登录验证:
mysql -u root -p
常见问题与注意事项
在操作过程中,可能会遇到以下问题:

- 权限不足:确保使用root用户执行命令,或通过sudo提升权限。
- 密码不生效:检查SQL语法是否正确,尤其是字段名称(如authentication_stringvspassword)。
- 服务启动失败:查看日志文件(通常位于/var/log/mysqld.log)排查错误。
相关问答FAQs
A1: 这通常是因为未执行FLUSH PRIVILEGES命令,在修改密码前,必须先刷新权限表,否则MySQL无法识别更改,请确保按照步骤顺序执行SQL命令。
Q2: 重置密码后,远程用户仍无法使用新密码登录,如何解决?
A2: 默认情况下,MySQL的root用户仅允许本地登录,如需远程访问,需执行以下命令授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'NewPassword123!'; FLUSH PRIVILEGES;
检查防火墙设置(如firewall-cmd)是否开放了MySQL默认端口(3306)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
 
 
 
  
  
  
  
 
发表回复