温馨提示×

Debian下MySQL如何设置密码

小樊
41
2026-08-14 23:10:51
栏目: 云计算

在 Debian 上设置或修改 MySQL(或 MariaDB)密码,常见场景和做法如下(覆盖 Debian 主流版本)。


一、首次安装时设置 MySQL root 密码

方式 1:使用 mysql_secure_installation(推荐)

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

按提示操作:

  • 设置 root 密码
  • 是否启用密码强度校验
  • 是否删除匿名用户
  • 是否禁止 root 远程登录
  • 是否删除 test 数据库

二、安装后修改 MySQL root 密码

✅ 情况 1:你能以 root 登录 MySQL

sudo mysql -u root -p

进入 MySQL 后执行:

MySQL 5.7 / 8.0

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

MariaDB / 老版本 MySQL

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

✅ 情况 2:忘记 root 密码(重置密码)

1️⃣ 停止 MySQL

sudo systemctl stop mysql

2️⃣ 跳过权限表启动

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

3️⃣ 免密码登录

mysql -u root

4️⃣ 修改密码

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

5️⃣ 重启 MySQL

sudo systemctl restart mysql

三、Debian 默认使用 auth_socket 的特殊情况

Debian 安装 MySQL / MariaDB 后:

  • root 默认不是用密码登录
  • 而是使用 auth_socket 插件

查看当前认证方式

SELECT user, host, plugin FROM mysql.user WHERE user='root';

如果看到:

plugin = auth_socket

改为密码登录(推荐)

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

验证

mysql -u root -p

四、设置普通用户密码

CREATE USER 'user1'@'localhost' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON 数据库名.* TO 'user1'@'localhost';
FLUSH PRIVILEGES;

五、常见错误排查

Access denied for user 'root'@'localhost'

✅ 原因:

  • 使用的是 auth_socket
  • 密码错误
  • 权限表未刷新

✅ 解决:

  • sudo mysql 登录
  • 或按 忘记密码 步骤重置

六、快速总结

场景 命令
首次设置 mysql_secure_installation
修改密码 ALTER USER root@localhost ...
忘记密码 --skip-grant-tables
Debian 默认问题 auth_socket → mysql_native_password

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

  • Debian 版本(cat /etc/debian_version
  • MySQL 还是 MariaDB(mysql --version

我可以给你完全对应你系统的命令

0