使用PHP连接到远程MySQL服务器

我正尝试使用以下代码从本地计算机虚拟主机连接到远程MySQL服务器:

$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die(mysql_error()); mysql_select_db($dbname, $conn) or die(mysql_error()); 

我的问题是,我无法在本地连接,收到错误:

无法连接到'xxx.xxx.xxx.xxx'(10060)上的MySQL服务器

当我将相同的PHPfile upload到服务器时,情况并非如此。 我能够毫无问题地查询数据库。

我无法通过命令行连接,但我可以访问的cPanel,这排除了我的IP被禁止偶然的机会。

我的本地服务器运行PHP 5.2.9,远程服务器5.2.12

  • 服务器的防火墙必须设置为启用端口3306上的连接
  • 你必须有一个MySQL用户,允许从% (任何主机)进行连接(详情参见手册 )

目前的问题是第一个问题,但是在你解决问题之后,你可能会得到第二个问题。

连接远程MySQL服务器非常容易使用PHP,你需要做的是:

  1. 在远程服务器上创build一个MySQL用户。

  2. 给予用户完全的权限。

  3. 使用PHP代码连接到服务器(示例如下)

 $link = mysql_connect('your_my_sql_servername or IP Address', 'new_user_which_u_created', 'password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_select_db('sandsbtob',$link) or die ("could not open db".mysql_error()); // we connect to localhost at port 3306 

我刚刚解决了这样一个问题。 我所学到的是:

  1. 你必须编辑my.cnf并在[mysqld]下设置bind-address = your.mysql.server.address
  2. 注释跳过networking领域
  3. 重新启动mysqld
  4. 检查它是否运行

     mysql -u root -h your.mysql.server.address –p 
  5. 用%作为域创build一个用户(usr或者其他),然后授予她访问有问题的数据库的权限。

     mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION; 
  6. 打开3306端口的防火墙(你可以使用iptables,确保打开端口以供其他人使用,或者如果你的安全性很好,那么只允许客户端地址)

  7. 重启防火墙/ iptables

你应该现在可以连接MySQL服务器forms的客户端服务器的PHP脚本。

这也许不是海报问题的答案。但这可能有助于面对与我相同的情况的人:

客户端有两个网卡,一个是无线网卡,一个是普通网卡。 ping到服务器可以成功。但telnet serverAddress 3306将会失败。 并会抱怨

无法连接到'xxx.xxx.xxx.xxx'(10060)上的MySQL服务器

当试图连接到服务器。所以我禁止了正常的networking适配器。 并尝试telnet serverAddress 3306它的工作。然后,它连接到MySQL服务器时工作。

Interesting Posts