温馨提示×

ubuntu mariadb为何连接不上

小樊
42
2026-09-22 21:17:00
栏目: 云计算

Ubuntu 上 MariaDB 连不上,常见原因大致就那几类。我按最常见 → 较少见给你梳理,并附上排查命令,你照着一步步来基本能定位。


一、MariaDB 服务根本没启动

这是最常见原因。

systemctl status mariadb

如果看到 inactive (dead):

sudo systemctl start mariadb
sudo systemctl enable mariadb

二、监听地址不对(只允许本地 socket)

很多连不上是因为 MariaDB 只监听 127.0.0.1 或 localhost。

查看监听端口:

ss -tlnp | grep 3306

如果只看到:

127.0.0.1:3306

说明不允许远程连接。

修改方法

编辑配置文件(Ubuntu 常见路径):

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到:

bind-address = 127.0.0.1

改成:

bind-address = 0.0.0.0

重启:

sudo systemctl restart mariadb

三、用户没有远程访问权限

即使端口通了,用户也可能不允许远程登录。

登录 MariaDB:

sudo mysql -u root

查看用户host:

SELECT user, host FROM mysql.user;

如果用户是:

root | localhost

那只能本地连。

创建远程用户

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

四、Ubuntu 防火墙挡住了 3306

sudo ufw status

如果启用且没放行:

sudo ufw allow 3306/tcp

(云服务器还要看安全组)


五、用错连接方式(socket vs TCP)

本地命令:

mysql -u root -p

走的是 socket。

远程或指定 IP:

mysql -h 192.168.1.10 -u user -p

走 TCP。


六、AppArmor / SELinux(较少)

Ubuntu 一般是 AppArmor,默认不会拦 MariaDB,除非你改了数据目录。


七、典型错误信息速查

错误 原因
Can't connect to MySQL server 服务没起 / 防火墙
Access denied for user 用户或权限问题
Unknown database 库不存在
Connection refused 端口未监听

建议你这样排查(顺序)

  1. systemctl status mariadb
  2. ss -tlnp | grep 3306
  3. sudo ufw status
  4. SELECT user, host FROM mysql.user;
  5. 看具体报错信息

如果你愿意,把**完整报错信息 + 连接方式(本地/远程/代码)**贴出来,我可以直接帮你定位到根因。

0 踩