连接不上 Debian 上的 MySQL,常见原因和排查思路如下(按出现频率排序):
systemctl status mysql
如果没运行:
systemctl start mysql
systemctl enable mysql
查看监听端口:
ss -tlnp | grep 3306
如果只看到:
127.0.0.1:3306
说明只允许本机连接。
编辑配置文件(版本不同位置可能不同):
/etc/mysql/mysql.conf.d/mysqld.cnf
# 或
/etc/mysql/my.cnf
找到:
bind-address = 127.0.0.1
改为:
bind-address = 0.0.0.0
然后重启:
systemctl restart mysql
例如 root@localhost 不能远程连。
登录 MySQL:
mysql -u root -p
查看用户 host:
SELECT user, host FROM mysql.user;
创建允许远程的用户:
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;
Debian 默认可能用 nftables 或 ufw:
ufw status
如果开启且没放行:
ufw allow 3306/tcp
云服务器还要检查安全组是否放行 3306。
本地:
mysql -u user -p -h 127.0.0.1
远程:
mysql -u user -p -h 服务器IP
Debian 默认用 AppArmor,一般不影响网络连接。
MySQL 8 默认用 caching_sha2_password,部分旧客户端连不上。
可改为:
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
如果你愿意,可以把具体报错信息和**连接方式(本地/远程/程序/命令行)**发我,我可以直接帮你定位。