在 Debian 系统上重置 MySQL(或 MariaDB)的 root 密码,可以按下面步骤操作。以下方法适用于 MySQL 5.7+ / 8.0 以及 Debian 10/11/12,同时也兼容 MariaDB(流程基本一致)。
sudo systemctl stop mysql
如果是 MariaDB:
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables --skip-networking &
--skip-networking是为了防止安全风险
确认进程已启动:
ps aux | grep mysqld
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果 ALTER USER 报错,可尝试:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
或旧版本:
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
exit;
sudo systemctl restart mysql
mysql -u root -p
sudo killall mysqld
然后重新执行第二步。
Access denied for user 'root'@'localhost'确认:
root@localhostFLUSH PRIVILEGES;auth_socket 插件有些 Debian 默认使用 socket 认证,而不是密码。
查看:
SELECT user, plugin FROM mysql.user WHERE user='root';
如果是 auth_socket,可改为密码登录:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
--skip-networking 以外的远程 root 登录如果你愿意,可以告诉我:
我可以给你精确到命令级别的方案 ✅