误删MySQL所有用户含localhost,如何添加localhost用户恢复连接?
别担心,这种误操作其实挺常见的,我帮你整理了一套一步步恢复的流程,亲测有效:
恢复MySQL localhost用户的步骤
1. 停止当前MySQL服务
不同操作系统的停止命令不一样:
- Ubuntu/Debian:
sudo systemctl stop mysql - CentOS/RHEL:
sudo systemctl stop mysqld - Windows:以管理员身份打开命令提示符,执行
net stop mysql
2. 启动MySQL并跳过权限验证
这一步会让你无需密码即可登录,同时关闭远程连接避免安全风险:
- Linux系统:执行
sudo mysqld_safe --skip-grant-tables --skip-networking &,后台启动跳过权限验证的MySQL进程 - Windows系统:先切换到MySQL的bin目录(比如
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin",路径根据你的安装版本调整),再执行mysqld --skip-grant-tables
3. 无密码登录MySQL
打开新的终端/命令提示符,直接执行 mysql(或 mysql -u root),无需输入密码就能进入MySQL命令行。
4. 创建并授权localhost用户
首先切换到mysql系统数据库:
USE mysql;
然后根据你的MySQL版本执行对应的SQL语句:
MySQL 8.0及以上版本
-- 创建localhost的root用户,替换成你想要的密码 CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; -- 授予该用户所有数据库的全部权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; -- 刷新权限让设置立即生效 FLUSH PRIVILEGES;
MySQL 5.7及更早版本
-- 创建localhost用户 CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; -- 若CREATE USER命令报错,可应急使用INSERT语句(优先推荐CREATE USER) -- INSERT INTO user (Host, User, Password) VALUES ('localhost', 'root', PASSWORD('your_new_password')); -- 授予全部权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES;
5. 重启MySQL到正常模式
先退出MySQL命令行:EXIT;
然后停止刚才的特殊模式进程,再正常启动服务:
- Linux系统:
sudo systemctl start mysql - Windows系统:
net start mysql
现在你应该可以通过 mysql -u root -p 输入刚才设置的密码,正常登录MySQL了。
内容的提问来源于stack exchange,提问作者Dhaein
相关产品推荐
相关产品推荐

