温馨提示×

ubuntu mysql为何登录失败

小樊
40
2026-10-27 14:48:29
栏目: 云计算

在 Ubuntu 上 MySQL 登录失败是很常见的问题,原因有很多种。下面我按最常见原因 → 排查方法 → 解决办法给你系统梳理一下。


一、最常见原因汇总

1️⃣ 使用了错误的登录方式(socket vs TCP)

Ubuntu 上 MySQL 默认使用 Unix socket 登录:

mysql -u root

而不是:

mysql -h 127.0.0.1 -u root -p

❌ 错误示例:

mysql -u root -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

✅ 正确方式(Ubuntu 默认):

sudo mysql -u root

2️⃣ root 用户使用了 auth_socket 插件(最常见)

Ubuntu 安装 MySQL 后,root 默认 不能用密码登录,只能用系统用户登录。

查看:

SELECT user, host, plugin FROM mysql.user;

如果看到:

root | localhost | auth_socket

✅ 解决方式一(推荐):

sudo mysql -u root

✅ 解决方式二(改为密码登录):

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

3️⃣ 密码错误 / 忘记密码

如果提示:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

✅ 重置 root 密码:

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &

然后:

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

4️⃣ MySQL 服务没启动

systemctl status mysql

如果没运行:

sudo systemctl start mysql

5️⃣ 用户不存在或 host 不匹配

例如:

Access denied for user 'root'@'127.0.0.1'

说明 root@127.0.0.1 不存在,只有 root@localhost

✅ 解决:

CREATE USER 'root'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

6️⃣ 端口或配置文件错误

查看:

cat /etc/mysql/my.cnf
cat /etc/mysql/mysql.conf.d/mysqld.cnf

确认:

bind-address = 127.0.0.1
port = 3306

二、快速自查清单 ✅

请依次检查:

  1. ✅ sudo mysql -u root 能否登录?
  2. ✅ systemctl status mysql
  3. ✅ SELECT user,host,plugin FROM mysql.user;
  4. ✅ 是否用 -h 127.0.0.1 导致 socket 登录失败
  5. ✅ 是否刚装完 MySQL(Ubuntu 默认无密码)

三、如果你愿意,可以直接贴错误

你可以把完整报错信息发给我,例如:

ERROR 1045 (28000): Access denied for user 'root'@'localhost'

或者:

mysql -u root -p

的输出,我可以直接帮你精准定位。

0 踩