在 Debian 上 MySQL 连不上,原因通常可以归为以下几类。你可以按顺序排查:
systemctl status mysql
# 或
systemctl status mariadb
如果没启动:
systemctl start mysql
systemctl enable mysql
MySQL 默认可能只监听 127.0.0.1
查看监听:
ss -lntp | grep 3306
如果看到:
127.0.0.1:3306
说明只能本地连接。
编辑配置文件(版本不同文件可能不同):
/etc/mysql/mysql.conf.d/mysqld.cnf
# 或
/etc/mysql/mariadb.conf.d/50-server.cnf
找到:
bind-address = 127.0.0.1
改为:
bind-address = 0.0.0.0
然后重启:
systemctl restart mysql
MySQL 用户是「用户 + 来源 IP」绑定的。
例如:
SELECT user, host FROM mysql.user;
如果用户是:
root@localhost
那你只能从本机连。
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;
Debian 常用 ufw:
ufw status
如果开启,放行 3306:
ufw allow 3306/tcp
Debian 默认用 AppArmor,一般不影响连接,但某些自定义数据目录可能导致问题。
本地:
mysql -u root -p
远程:
mysql -h 服务器IP -u user -p
journalctl -u mysql
# 或
cat /var/log/mysql/error.log
Can't connect to MySQL server → 服务没起 / 防火墙 / IP 不对Access denied for user → 用户名或权限问题Unknown host → DNS / IP 错误如果你愿意,可以把 具体报错信息 + 连接方式(本地/远程) 发出来,我可以直接帮你定位。