MySQL远程连接失败?先查bind-address和防火墙配置!
- 内容介绍
- 文章标签
- 相关推荐
本文共计1012个文字,预计阅读时间需要5分钟。
默认安装的MySQL通常只监听本地回环地址,远程客户端端发来的TCP请求无法直接进入,连接阶段都过不去。这不是密码错误或用户没有授权的问题,而是压力根没有在监听那个网卡的地址。
检查方式:grep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf(Debian/Ubuntu)或 /etc/my.cnf(CentOS)。常见错误值是 bind-address = 127.0.0.1 或直接注释掉这行(某些版本默认即为 127.0.0.1)。
- 要允许远程连接,改成
bind-address = 0.0.0.0(监听所有 IPv4 接口),或指定具体内网 IP(如192.168.1.100)更安全 - 改完必须重启服务:
sudo systemctl restart mysql(或mysqld) - 注意:MySQL 8.0+ 默认禁用
skip-networking,但若配置里显式写了它,必须删掉,否则bind-address无效
用户权限不足:CREATE USER 和 GRANT 必须配对使用
即使端口通了、bind 地址放开了,MySQL 层还会校验登录用户是否被允许从该 host 连入。用 root@localhost 创建的用户,默认不能从 192.168.1.50 连,这是两个完全不同的账号。
本文共计1012个文字,预计阅读时间需要5分钟。
默认安装的MySQL通常只监听本地回环地址,远程客户端端发来的TCP请求无法直接进入,连接阶段都过不去。这不是密码错误或用户没有授权的问题,而是压力根没有在监听那个网卡的地址。
检查方式:grep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf(Debian/Ubuntu)或 /etc/my.cnf(CentOS)。常见错误值是 bind-address = 127.0.0.1 或直接注释掉这行(某些版本默认即为 127.0.0.1)。
- 要允许远程连接,改成
bind-address = 0.0.0.0(监听所有 IPv4 接口),或指定具体内网 IP(如192.168.1.100)更安全 - 改完必须重启服务:
sudo systemctl restart mysql(或mysqld) - 注意:MySQL 8.0+ 默认禁用
skip-networking,但若配置里显式写了它,必须删掉,否则bind-address无效
用户权限不足:CREATE USER 和 GRANT 必须配对使用
即使端口通了、bind 地址放开了,MySQL 层还会校验登录用户是否被允许从该 host 连入。用 root@localhost 创建的用户,默认不能从 192.168.1.50 连,这是两个完全不同的账号。

