Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP连接到远程MySQL服务器_Php_Mysql_Mysql Connect_Remote Server_Mysql Error 2002 - Fatal编程技术网

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

使用PHP连接到远程MySQL服务器,php,mysql,mysql-connect,remote-server,mysql-error-2002,Php,Mysql,Mysql Connect,Remote Server,Mysql Error 2002,我正在尝试使用以下代码从本地计算机virtualhost连接到远程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服务器 当我将同一

我正在尝试使用以下代码从本地计算机virtualhost连接到远程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服务器

当我将同一个PHP文件上载到服务器时,情况并非如此。我可以毫无问题地查询数据库

我也无法通过命令行连接,但我可以访问cPanel,这排除了我的IP被意外禁止的可能性

我的本地服务器正在运行PHP5.2.9,远程服务器是5.2.12
  • 必须设置服务器防火墙,以启用端口3306上的输入连接
  • MySQL中必须有一个允许从
    %
    连接的用户(任何主机)(有关详细信息,请参阅)

  • 当前的问题是第一个问题,但解决后很可能会出现第二个问题。

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

  • 在远程服务器中创建MySQL用户

  • 将完全权限授予用户

  • 使用PHP代码连接到服务器(下面给出的示例)

  • $link=mysql\u connect('your\u my\u sql\u servername或IP地址','new\u user\u创建的用户','password');
    如果(!$link){
    die('无法连接:'.mysql_error());
    }
    echo“连接成功”;
    mysql_选择_db('sandsbtob',$link)或die(“无法打开db.mysql_error());
    //我们在端口3306连接到本地主机
    
    我刚刚解决了这类问题。 我学到的是:

  • 您必须编辑
    my.cnf
    并在
    [mysqld]
    下设置
    bind address=your.mysql.server.address
  • 注释掉跳过网络字段
  • 重新启动mysqld
  • 检查它是否正在运行

    mysql -u root -h your.mysql.server.address –p 
    
  • 创建一个%as域的用户(usr或任何用户),并授予她对相关数据库的访问权

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
    
  • 打开端口3306的防火墙(您可以使用iptables。确保为所有混响打开端口,或者如果您处于高度安全状态,则只允许客户端地址)

  • 重新启动防火墙/iptables

  • 您现在应该可以从客户端服务器php脚本连接mysql服务器了。

    这可能不是poster问题的答案。但这可能对与我面临相同情况的人有所帮助:

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

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

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

    当问题首次出现时,我在远程MySQL中创建了一个通配符用户,认为我的IP可能已经更改(它不应该更改)。几天前我能够连接到同一台服务器,因此我怀疑这是防火墙问题。请尝试telnet xx.xx.xx.xx 3306。如果它没有连接,那就是一个网络issue@Bozho:无法在3306上远程登录。由于它是共享服务器,我必须与主机通话,因为我无法访问他们的网络。远程服务器可能正在使用其他端口。是的,是的。向主机管理员询问这一点