游客发表

mysql密码忘了怎么查看

发帖时间:2026-10-17 04:54:28

MySQL密码忘了,密码忘别急着卸载重装。密码忘数据还在,密码忘只是密码忘进不去门而已。我见过太多人一慌就删库跑路,密码忘其实有更体面的密码忘解法。

核心思路就一条:绕过认证,密码忘临时改掉密码。密码忘MySQL的密码忘认证机制在启动时可以通过参数跳过,这给了我们一条后路。密码忘

方法一:skip-grant-tables(最常用)

先停掉MySQL服务。密码忘在Linux上执行service mysql stop,密码忘Windows下在“服务”里停掉,密码忘或者net stop mysql。密码忘然后手动启动它,密码忘加上跳过权限表的参数:

mysqld --skip-grant-tables &

注意,这一步要确保没有其他MySQL进程在跑。启动后,直接无密码登录:

mysql -u root

进去了。这时候别急着改密码,先刷新权限让认证模块生效:

FLUSH PRIVILEGES;

然后换掉root密码。MySQL 5.7+和8.0的语法不同,5.7用:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');

8.0用:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

改完退出,重启MySQL服务,用新密码登录即可。

方法二:初始化参数文件(更优雅)

如果你不想敲命令行,可以在配置文件my.cnf或my.ini里加一行:

[mysqld] skip-grant-tables

然后正常重启服务。登录后按上面步骤改密码,改完记得把这一行删掉,再重启。否则你的数据库会一直裸奔,任何人都能无密码进。

几个坑,踩过才知道

第一,用skip-grant-tables启动时,FLUSH PRIVILEGES必须执行,不然SET PASSWORD会报错。第二,如果你用的是MySQL 8.0,默认认证插件是caching_sha2_password,老语法会失效。第三,改完密码后,别急着测试,先确认服务是正常模式重启的,否则你连不上还以为是密码错了。

有一次,帮朋友处理他公司的服务器,他试了网上各种“秘籍”都不行,最后发现是配置文件里残留了旧的skip-grant-tables没删,导致每次重启都在跳过认证。删掉那行,世界清净了。

还有更狠的情况——如果你连root用户都被删了,或者权限表整个坏了,那就得用--skip-grant-tables进去后重建用户。不过这种场景很少见,大部分时候只是密码遗忘。

最后说句实在话,密码忘了不可怕,可怕的是没备份。趁现在能进去,赶紧导出一份数据:

mysqldump -u root -p --all-databases > backup.sql

存到安全的地方。下次再忘,直接恢复,连改密码都省了。

别问我为什么知道这么多,都是血泪换来的。

    热门排行

    友情链接