所谓“安全模式”是通过特定参数启动mysql进行维护。使用mysqld_safe配合–skip-grant-tables和–skip-networking可跳过权限验证并禁用网络连接,便于密码重置或故障排查;登录后可修改密码、修复数据;操作完成后需终止该进程并正常重启服务,恢复权限控制,避免安全隐患。

MySQL 中并没有一个叫做“安全模式”的开关,但通常所说的“启用安全模式启动”指的是以一种受限的方式启动 MySQL 服务,限制某些功能以防止误操作,比如禁止远程连接、跳过权限表验证、不加载插件等。这种模式常用于故障排查或密码重置。
1. 使用 mysqld_safe 启动并跳过权限检查
这是最常见的“安全模式”用法,适用于忘记 root 密码或需要临时绕过权限系统的情况:
- 停止当前 MySQL 服务:
sudo systemctl stop mysql - 以跳过权限表的方式启动:
sudo mysqld_safe –skip-grant-tables –skip-networking &
说明:
–skip-grant-tables:跳过权限验证,所有用户无需密码即可登录,但只能执行有限操作(如修改密码)。
–skip-networking:禁止 TCP/IP 连接,只允许本地 socket 连接,提升安全性。
2. 登录并重置密码或修复数据
在上述方式启动后,可以直接登录:
mysql -u root
此时无需密码。可以进行以下操作:
- 刷新权限表:
FLUSH PRIVILEGES; - 修改 root 用户密码(MySQL 8.0+):
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’; - 修复表或导出数据
3. 正常重启 MySQL 服务
完成维护后,必须正常重启服务以恢复权限控制:
- 先关闭 mysqld_safe 进程:
sudo pkill mysqld_safe - 重新启动 MySQL:
sudo systemctl start mysql
此时 MySQL 恢复正常运行,所有安全限制解除。
基本上就这些。所谓的“安全模式”其实是通过特定参数临时改变 MySQL 的启动行为,便于维护。操作完成后务必恢复正常启动,避免留下安全漏洞。