在 Debian 系统中修改 MySQL(或 MariaDB)密码,常见有 3 种场景。下面按最常用、最安全的方式给你说明(适用于 Debian 10/11/12 及常见版本)。
一、已知当前 root 密码(推荐)
方法 1:用 mysqladmin(最简单)
mysqladmin -u root -p password "新密码"
回车后输入旧密码即可。
方法 2:在 MySQL 内部修改(推荐)
- 登录 MySQL
mysql -u root -p
- 修改密码(MySQL 5.7+ / MariaDB 10.4+)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
- 刷新权限
FLUSH PRIVILEGES;
- 退出
EXIT;
✅ 这是最标准、最安全的方式
二、忘记 root 密码(重置密码)
1️⃣ 停止 MySQL 服务
sudo systemctl stop mysql
2️⃣ 跳过权限表启动 MySQL
sudo mysqld_safe --skip-grant-tables --skip-networking &
3️⃣ 免密码登录
mysql -u root
4️⃣ 修改密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果是 MariaDB 或老版本:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
5️⃣ 退出并重启 MySQL
exit
sudo systemctl restart mysql
三、Debian 默认安装(MariaDB)注意点
Debian 默认使用的是 MariaDB,可能有以下情况:
情况 1:使用 unix_socket 登录
sudo mysql
无需密码,直接修改密码即可:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果报错:
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('新密码');
四、验证是否修改成功
mysql -u root -p
五、常见错误及解决
❌ Access denied for user 'root'@'localhost'
→ 密码错误或服务未重启
❌ ALTER USER 报错
→ 可能版本较老,用:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
六、建议的安全配置
DROP USER IF EXISTS 'root'@'%';
避免 root 被远程登录。
如果你愿意,可以告诉我:
- Debian 版本(
cat /etc/debian_version) - MySQL / MariaDB 版本(
mysql --version)
我可以给你完全精准的命令。
