在 Debian 上“重置 MySQL 权限”通常有两种常见场景:
下面分别说明。
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables --skip-networking &
--skip-networking是为了安全,禁止远程连接
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
如果是老版本(5.6 及以下):
UPDATE mysql.user SET Password=PASSWORD('NewPassword123!') WHERE User='root';
FLUSH PRIVILEGES;
exit
sudo systemctl restart mysql
⚠️ 这会删除所有用户和权限,仅适合测试环境
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
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 --version)我可以给你更精确的步骤。