## 适用场景
接手一台没人记得密码的 MySQL,或者手滑把 root 密码改丢了,常规登录全部被拒。只要你对操作系统有 root 权限,就能通过跳过授权表的模式重置数据库密码。这个方法威力大也危险:跳过授权期间数据库等于不设防,整个流程要速战速决,做完立刻恢复。顺云云服务器的系统 root 在你手里,自建 MySQL 走这套流程即可,整个操作十来分钟,前提只有一个:能 root 登录这台机器。
## 完整步骤
第一步停掉数据库:
bash systemctl stop mysqld
第二步以跳过授权与禁网的方式启动:
bash mysqld_safe --skip-grant-tables --skip-networking &
--skip-grant-tables 让权限检查整体失效,任意账号可免密进入;--skip-networking 关闭网络监听,只允许本机连接,降低裸奔窗口的风险。第三步免密登录并重置:
sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH 先行是让权限表重新加载,否则改密码语句会被拒;个别版本对认证插件有差异,报错时按错误提示换带插件名的写法即可。第四步收尾:停掉这个临时实例,删除或不再使用跳权参数,按正常方式启动:
bash systemctl start mysqld
用新密码登录验证通过,流程完结。
## 安全提醒
跳权窗口期必须最小化:操作期间确认没有其他人在同机,最好临时加一层系统防火墙仅放行本机;完成后第一件事检查 MySQL 日志确认无异常连接。密码要一步到位设置成正式强度的密码,别先用弱密码占位再改。如果服务器还配了免密的管理脚本或面板,重置后它们同样要用新密码更新配置。
## 善后与预防
不少发行版首次安装时在日志里生成过随机临时密码,重置前先翻 /var/log/mysqld.log 找 temporary password 字样,也许根本不用走跳权流程。预防上,数据库密码进密码管理器统一保存,人员交接清单里必列一项;应用侧用独立的受限账号而非 root,就算 root 再丢一次,业务也不受影响。密码重置这种操作本身就是演练机会,顺手记录成内部文档,下次任何人不慌。文档里同时写清跳权模式的危险前提,避免后人不明就里随手在生产环境复制这条命令。