MySQL数据库为了保障用户数据的安全性,不会以明文形式存储用户密码,所有密码都会经过加密算法处理生成哈希值后保存在系统表中,因此无法直接查看到明文的MySQL密码,只能获取到加密后的密码哈希串。

通过系统表查看密码哈希值
MySQL的用户账号和密码信息都存储在mysql系统数据库的user表中,不同版本的MySQL密码字段名称存在差异,需要根据实际版本查询对应的字段。
MySQL 5.7及以上版本
MySQL 5.7版本之后,密码字段从password更名为authentication_string,查询语句如下:
-- 登录MySQL后执行,查询所有用户的密码哈希值 SELECT user, host, authentication_string FROM mysql.user;
执行上述语句后,authentication_string列显示的就是对应用户的密码加密哈希值,无法直接反推为明文密码。
MySQL 5.6及以下版本
旧版本MySQL的密码存储在password字段中,查询语句如下:
-- 登录MySQL后执行,查询所有用户的密码哈希值 SELECT user, host, password FROM mysql.user;
忘记密码如何重置
如果忘记了MySQL的登录密码,无法通过查看哈希值获取明文,需要通过重置密码的方式解决,步骤如下:
- 停止MySQL服务,不同系统命令不同,Linux系统可执行
systemctl stop mysqld,Windows系统可在服务管理中停止MySQL服务 - 以跳过权限验证的方式启动MySQL,Linux系统执行
mysqld --skip-grant-tables &,Windows系统在命令行进入MySQL安装目录的bin文件夹后执行mysqld --skip-grant-tables - 新开一个命令行窗口,直接输入
mysql即可无密码登录数据库 - 执行密码重置语句,MySQL 5.7及以上版本执行:
-- 重置root用户密码,将new_password替换为实际要设置的密码
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE user='root';
FLUSH PRIVILEGES;
MySQL 5.6及以下版本执行:
-- 重置root用户密码,将new_password替换为实际要设置的密码
UPDATE mysql.user SET password=PASSWORD('new_password') WHERE user='root';
FLUSH PRIVILEGES;
- 关闭跳过权限验证的MySQL进程,重启MySQL服务,使用新密码即可正常登录
密码安全注意事项
日常使用MySQL时,需要注意以下密码安全相关的规范:
- 不要尝试破解密码哈希值获取明文,这种行为不符合安全规范,且哈希值通常难以反向破解
- 设置密码时尽量使用大小写字母、数字和特殊字符组合的复杂密码,避免使用简单弱密码
- 不要将数据库密码明文写在项目配置文件或者公开的文档中,避免密码泄露
- 定期更换数据库密码,减少密码被破解或者泄露后的风险
注意:任何情况下都不应该尝试获取他人的MySQL密码,所有密码操作都需要在自己拥有合法权限的数据库实例上进行,避免违反数据安全相关规定。
MySQL密码查看user表authentication_string数据库安全修改时间:2026-07-20 01:24:18