温馨提示×

Debian MySQL密码如何重置

小樊
36
2026-07-30 09:27:19
栏目: 云计算

在 Debian 系统上重置 MySQL(或 MariaDB)的 root 密码,可以按下面步骤操作。以下方法适用于 MySQL 5.7+ / 8.0 以及 Debian 10/11/12,同时也兼容 MariaDB(流程基本一致)。


一、停止 MySQL 服务

sudo systemctl stop mysql

如果是 MariaDB:

sudo systemctl stop mariadb

二、跳过权限表启动 MySQL

1️⃣ 以跳过授权表方式启动

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

--skip-networking 是为了防止安全风险

确认进程已启动:

ps aux | grep mysqld

三、免密码登录 MySQL

mysql -u root

四、重置 root 密码

✅ MySQL 5.7 / 8.0

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

如果 ALTER USER 报错,可尝试:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');

✅ MariaDB

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

或旧版本:

UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;

五、退出并重启 MySQL

exit;
sudo systemctl restart mysql

六、验证新密码

mysql -u root -p

七、常见问题

❌ 忘记 root 密码且无法停止 MySQL

sudo killall mysqld

然后重新执行第二步。


❌ 出现 Access denied for user 'root'@'localhost'

确认:

  • 使用的是 root@localhost
  • 已执行 FLUSH PRIVILEGES;

❌ Debian 使用 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 登录
  • 考虑使用普通管理账号代替 root

如果你愿意,可以告诉我:

  • Debian 版本
  • MySQL / MariaDB 版本
  • 报错信息

我可以给你精确到命令级别的方案 ✅

0