我正在尝试学习在 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);
此连接失败并出现以下错误:
警告:mysqli_connect():(HY000/2003):无法连接到“xx.xx.xx.ip”上的 MySQL 服务器 (111)
请注意,$sql_user、$sql_pass、$sql_host 等与 Java 连接中使用的凭据相同,因此用户无法从新的服务器访问服务器不应该有任何问题IP,因为该用户被授予对 % 的访问权限,并且我已确保它确实能够从用户表中未明确允许的多个 IP 访问 SQL 服务器。我还尝试了不同的用户,包括 root,并且都给出了相同的连接错误。
我花了几个小时环顾四周,但老实说我找不到任何似乎是正确答案的东西,非常感谢任何帮助!
这有可能是我的虚拟主机造成的吗?我已经在 HostGator 网络主机以及 whois.com 主机上尝试过这个脚本,但都给出了相同的错误。他们是否可能阻止 PHP 脚本连接到远程数据库?
最佳答案
您是否尝试过从您的虚拟主机远程登录到 3315 上的服务器?
关于php - 无法在 PHP 中连接到远程 SQL 数据库,但已设置远程访问并确认可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644296/