【发布时间】:2014-10-30 02:56:47
【问题描述】:
我正在尝试学习在 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 网络主机以及 whois.com 主机上尝试过这个脚本,并且都给出了同样的错误。他们可能会阻止 PHP 脚本连接到远程数据库吗?
【问题讨论】:
标签: php mysql sql-server database remote-access