温馨提示×

ubuntu mysql为何无法登录

小樊
45
2026-08-11 11:46:33
栏目: 云计算

Ubuntu 下 MySQL 无法登录 的原因很多,下面按最常见情况给你一个排查清单。你可以对照逐步确认。


一、先确认 MySQL 是否正常运行

sudo systemctl status mysql
  • 如果没运行:
sudo systemctl start mysql

二、最常见原因:认证方式问题(Ubuntu 特有)

✅ 现象

mysql -u root -p

输入密码后提示:

Access denied for user 'root'@'localhost'

✅ 原因

Ubuntu 默认使用 auth_socket 插件,而不是密码登录。

✅ 解决方案(推荐)

1️⃣ 用 sudo 登录(无需密码)

sudo mysql

2️⃣ 查看当前认证方式

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

3️⃣ 改为密码登录(可选)

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

然后就可以:

mysql -u root -p

三、密码错误 / 忘记密码

✅ 重置 root 密码

  1. 停止 MySQL
sudo systemctl stop mysql
  1. 安全模式启动
sudo mysqld --skip-grant-tables --skip-networking &
  1. 免密登录
mysql -u root
  1. 修改密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  1. 重启 MySQL
sudo systemctl restart mysql

四、端口 / 绑定地址问题(远程或本地连不上)

✅ 配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

检查:

bind-address = 127.0.0.1
port = 3306
  • 本地登录:127.0.0.1
  • 远程登录:需改为 0.0.0.0 并授权用户

五、用户权限问题

✅ 确认用户是否存在

SELECT user, host FROM mysql.user;

✅ 授权示例

CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';
FLUSH PRIVILEGES;

六、AppArmor / 权限问题(较少见)

sudo aa-status

如 MySQL 被限制,可尝试:

sudo systemctl restart apparmor

七、快速自检命令汇总

sudo systemctl status mysql
sudo mysql
mysql -u root -p
SELECT user, host, plugin FROM mysql.user;

八、你可以直接贴这些给我,我帮你精准判断

请贴出:

  1. 登录命令
  2. 完整报错信息
  3. Ubuntu 版本
  4. MySQL 版本

例如:

Ubuntu 22.04
MySQL 8.0
mysql -u root -p
Access denied for user 'root'@'localhost'

我可以一步一步帮你解决 ✅

0