温馨提示×

怎么重置Debian MySQL权限

小樊
45
2026-09-23 03:29:11
栏目: 云计算

在 Debian 上“重置 MySQL 权限”通常有两种常见场景:

  1. 忘记 root 密码,需要重置 root 权限/密码
  2. 误删或改乱了用户权限,想恢复到默认状态

下面分别说明。


一、忘记 root 密码,重置 MySQL root 权限(最常用)

1. 停止 MySQL 服务

sudo systemctl stop mysql

2. 以跳过权限表方式启动 MySQL

sudo mysqld_safe --skip-grant-tables --skip-networking &

--skip-networking 是为了安全,禁止远程连接

3. 无密码登录 MySQL

mysql -u root

4. 重置 root 密码(MySQL 5.7 / 8.0 通用)

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';

如果是老版本(5.6 及以下):

UPDATE mysql.user SET Password=PASSWORD('NewPassword123!') WHERE User='root';
FLUSH PRIVILEGES;

5. 退出并重启 MySQL

exit
sudo systemctl restart mysql

二、清空并重建 MySQL 权限(慎用)

⚠️ 这会删除所有用户和权限,仅适合测试环境

方法 1:重新初始化数据目录(最彻底)

sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql
sudo mysqld --initialize
sudo systemctl start mysql

查看临时 root 密码:

sudo grep 'temporary password' /var/log/mysql/error.log

方法 2:只重置权限表(不删数据)

sudo systemctl stop mysql
sudo mysqld --skip-grant-tables &
mysql -u root

然后执行:

DELETE FROM mysql.user;
FLUSH PRIVILEGES;
CREATE USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

三、只修复某个用户的权限

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
GRANT SELECT, INSERT ON db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

四、常见排查命令

SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'root'@'localhost';

如果你能说明:

  • MySQL 版本(mysql --version)
  • 是 本地还是 Docker
  • 是 忘记密码 还是 权限乱了

我可以给你更精确的步骤。

0 踩