温馨提示×

ubuntu mariadb为何无法登录

小樊
56
2026-10-13 11:04:54
栏目: 云计算

在 Ubuntu 上 MariaDB 无法登录 是很常见的问题,原因有很多种。下面按最常见原因 → 排查方法 → 解决办法来系统说明。


一、最常见原因汇总

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

MariaDB 默认优先使用 Unix socket 登录。

mysql -u root

✅ 可以

mysql -u root -h 127.0.0.1 -p

❌ 可能失败(密码/权限不对)


2️⃣ root 用户使用 unix_socket 认证(Ubuntu 默认)

Ubuntu 安装 MariaDB 后,root 默认 不能用密码登录。

查看:

SELECT user, host, plugin FROM mysql.user;

如果看到:

root | localhost | unix_socket

说明 root 只能本地 socket 登录。

✅ 解决方式:

sudo mysql

或切换为密码登录:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的密码');
FLUSH PRIVILEGES;

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

错误提示:

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

✅ 重置密码(安全模式):

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

然后:

mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
EXIT;
sudo systemctl restart mariadb

4️⃣ 服务没启动

systemctl status mariadb

如果没运行:

sudo systemctl start mariadb

5️⃣ 端口或 bind-address 限制

配置文件:

/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.0.1

远程登录失败通常是这个原因。


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

登录失败但用户存在,可能是 host 不对。

CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;

二、快速自检清单 ✅

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

三、建议你补充的信息(便于精准定位)

你可以贴出:

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

我可以直接告诉你 是哪一条原因 + 具体命令。

0 踩