查看 MySQL 本地用户
在排查数据库连接问题时,确认当前有哪些用户以及权限分布是第一步。通过命令行可以直接查询 mysql 系统库中的用户表。
打开命令提示符(CMD)或终端,以管理员身份运行:
SELECT User, Host FROM mysql.user;
这会列出所有允许登录的用户名和主机地址。常见的默认超级管理员通常是 root,部分环境可能配置了其他专用账户。如果你记得密码,可以直接尝试登录验证:
mysql -u root -p
若未设置过密码,可直接输入 mysql -u root 进入。
关于密码存储机制
需要明确的是,MySQL 出于安全考虑,密码是以加密形式存储在 authentication_string 字段中的,无法直接还原明文。你可以查询该字段来确认用户是否设置了空密码:
SELECT User, authentication_string FROM mysql.user;
如果 authentication_string 为空,说明该用户没有设置访问密码。
重置 root 密码
如果忘记了密码导致无法登录,可以通过跳过权限验证模式进行重置。这通常涉及停止服务、修改启动参数、执行 SQL 语句以及重启服务几个环节。
1. 停止服务
根据操作系统不同,使用相应的命令停止 MySQL 进程。
Windows (管理员 CMD):
net stop mysql
Linux/macOS:
sudo systemctl stop mysql
2. 跳过权限验证启动
我们需要以特殊模式启动 MySQL 服务,这样可以在不验证密码的情况下直接进入数据库。
mysqld --skip-grant-tables --skip-networking
注意:--skip-networking 是为了防止在未授权状态下被网络攻击,生产环境慎用,但在本地重置密码时非常必要。
3. 登录并修改密码
保持上述窗口不动,重新打开一个新的终端窗口,此时无需密码即可登录:
mysql -u root
进入交互界面后,执行以下 SQL 语句修改密码(请将 new_password 替换为你想要的新密码):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
4. 重启服务
完成修改后,关闭所有 MySQL 相关窗口,重新启动服务即可生效。

