我试图学习在PHP中使用SQL的东西,但我只是在连接到我的数据库时遇到了问题。
数据库几乎肯定会在某种程度上使用远程访问。我暂时禁用了iptables(我知道,坏坏了!),所以没有防火墙阻止访问。我正在使用的MySQL用户被配置为能够从任何IP连接。 SQL服务器正在正确侦听所有连接,并在Linux专用服务器上运行。
[root@1742CC-XEON ~]# netstat -lpnut | grep mysql
tcp 0 0 0.0.0.0:3315 0.0.0.0:* LISTEN 3915/mysqld
我还使用完全相同的凭据成功远程连接到我的Java数据库,如下所示:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://__ip__:_port_/_dbname_", "username", "password");
System.out.println("Connection established.");
这个功能很好,我可以成功运行查询等。由于我现在禁用了iptables,这个连接在任何有Java和Java SQL连接器的地方都可以正常工作。
现在,我尝试在PHP中连接到同一个数据库:
$db = mysqli_connect($sql_host, $sql_user, $sql_pass, $sql_db, $sql_port);
此连接因以下错误而失败:
Warning: mysqli_connect(): (HY000/2003): Can't connect to MySQL server on 'xx.xx.xx.ip' (111)
请注意,$ sql_user,$ sql_pass,$ sql_host等与Java连接中使用的凭据完全相同,因此用户无法访问服务器的任何问题都不应该存在。一个新的IP,因为该用户被授予对%的访问权限,并且我确保它确实能够从用户表中未明确允许的多个IP访问SQL服务器。我也尝试过不同的用户,包括root用户,并且都会给出相同的连接错误。
我花了几个小时环顾四周,但老实说,我找不到任何看似正确答案的东西,非常感谢任何帮助!
这可能是由我的虚拟主机引起的吗?我在HostGator webhost以及whois.com托管上尝试过这个脚本,两者都给出了同样的错误。他们可能会阻止PHP脚本连接到远程数据库吗?
答案 0 :(得分:0)
您是否曾尝试通过网络托管服务器远程登录服务器3315?