当我尝试从远程计算机连接到 MySQL 数据库时,收到一条提示:Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't Connect to MySQL server on 'XXX.XXX.XX.XX' (10060)
我已经在 MySQL 管理员中创建了一个用户帐户并添加了一个主机以启用远程访问,我也对端口上的 Windows 防火墙进行了例外设置,3306
但连接仍然失败。
问题是什么?
谢谢!
答案1
我假设你的 mysql 服务器正在 Windows 上运行...因此打开一个 DOS 窗口并输入:
netstat -an
你应该找到这样的一行:
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
这告诉您 mysql 服务器正在运行并监听 TCP 端口 3306。
您可以进行的另一项测试是通过 telnet(从另一台电脑)连接到您的 mysql 服务器:
telnet ip_mysql_server 3306
这将打开一个 telnet 会话:
Connected to server_name.
Escape character is '^]'.
5.0.XX-community-nt-log
答案2
错误 10060 意味着你不允许远程访问 Web 服务器。因此
- 确保您使用的是 MySQL 服务器的正确 IP 地址。
- 您的连接的其余参数是相同的。
- 使用
%
通配符作为用户帐户的主机部分,以允许从任何主机进行连接(请参阅添加用户帐户文章)。
请参见远程连接时出现错误 10060 的解决方案发布以了解详情。
答案3
首先,这是一个非常为数据库服务器设置全球开放端口是个坏主意。尤其是当它位于 MySQL 默认端口上时。您只会引诱他人尝试入侵您的数据库。
您是否尝试过使用端口扫描工具,例如nmap您是否可以从远程计算机扫描数据库服务器?它会告诉您端口是否已打开nmap -PN -p 3306 XXX.XXX.XX.XX
?
答案4
1)iptables 访问
sudo iptables -I INPUT -p tcp --dport 3306-j ACCEPT
sudo service iptables save
2)我的.conf
[mysqld]
port = 3306
bind-address = 0.0.0.0
3)mysql
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;
4)mysqld
sudo service mysqld restart