"Can't connect to MySQL server on '192.16.1.3:3306' (10060) QMYSQL: Unable to connect"
时间: 2025-03-05 17:39:39 浏览: 44
### 解决 MySQL 远程连接问题
当遇到 `Can't connect to MySQL server on '192.168.1.3:3306' (10060)` 错误时,这通常意味着客户端无法建立到指定 IP 地址和端口的 TCP/IP 连接。此错误可能由多种原因引起。
#### 配置 MySQL 服务器允许远程连接
默认情况下,MySQL 可能仅监听本地地址(`localhost` 或 `127.0.0.1`)。为了使 MySQL 接受来自其他机器上的请求,需编辑其配置文件 `/etc/mysql/my.cnf` 或者 Windows 下相应的路径下的 `my.ini` 文件,在 `[mysqld]` 节点下添加或修改 bind-address 参数为实际外网IP或是通配符 `0.0.0.0` 表示接受所有接口上的连接[^1]:
```ini
[mysqld]
bind-address = 0.0.0.0
```
重启 MySQL 服务以应用更改:
对于 Linux 用户:
```bash
sudo systemctl restart mysqld.service
```
对于 Windows 用户,则通过服务管理器来重新启动 MySQL 服务。
#### 开放防火墙端口
如果操作系统启用了防火墙,则需要确保开放了 MySQL 默认使用的 3306 端口。在 CentOS/RHEL 上可执行如下命令开启并保存规则永久生效:
```bash
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
```
Ubuntu/Debian 使用 ufw 工具操作类似:
```bash
ufw allow 3306/tcp
```
Windows Server 则是在高级安全 Windows Defender 防火墙中创建入站规则允许特定端口通信。
#### 创建具有适当权限的用户账户
确认已存在能够从任意主机访问数据库资源的账号;如果没有的话新建一个这样的用户,并赋予必要的权限给它。例如:
```sql
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
FLUSH PRIVILEGES;
```
上述 SQL 语句会创建一个新的超级管理员级别的用户 newuser 并授予全局范围内的全部权限。请注意根据实际情况调整用户名、密码以及授权级别。
#### 测试网络连通性和 MySQL 服务状态
最后一步是验证目标服务器上运行着正常工作的 MySQL 实例并且可以从外部到达该实例所在的物理位置。可以尝试 telnet 或者 nc(netcat) 来简单测试一下端口可达性:
```bash
telnet 192.168.1.3 3306
# or using netcat if available
nc -vz 192.168.1.3 3306
```
成功则表示一切准备就绪,现在应该可以在 Qt 应用程序里顺利建立起与远程 MySQL 数据库之间的连接了。
阅读全文
相关推荐















