连接到另一台服务器上的mysql

时间:2013-01-21 12:23:51

标签: php mysql apache

我试图从另一台服务器连接到mysql数据库服务器。以下是两台服务器上的配置。

  

服务器1:   我用php和apache服务安装了xampp,它有以下ip 172.x1.x1.x1

     

服务器2:   我安装了mysql,它有以下ip 172.x1.x1.x2。

以下是我用来连接数据库的连接脚本

<?php
    //Database connection constants
    define("DATABASE_HOST", "172.x1.x1.x2");
    define("DATABASE_USERNAME", "root");
    define("DATABASE_PASSWORD", "");
    define("DATABASE_NAME", "management");
?>

上面的脚本位于名为app_config.php的文件中,位于服务器1中 以下脚本位于名为connect.php的文件中,它也位于服务器1

<?php
require 'app_config.php';
$connect_error = 'Sorry we\'experiencing connection problems.';
$table_error = 'Table not found';
mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)
or die($connect_error);

mysql_select_db(DATABASE_NAME)     或者死($ table_error); ?&GT;  现在,当我尝试连接时,我收到以下错误

  

警告:mysql_connect()[function.mysql-connect]:主机'hr1.saqa.co.za'不允许连接到C:\ xampp \ htdocs \ scripts \ functions \ database \ connect中的MySQL服务器.php在第4行

     

致命错误:在第5行的C:\ xampp \ htdocs \ scripts \ functions \ database \ connect.php中调用未定义的函数handle_error()

如果你能帮助我们,那将是很棒的。

2 个答案:

答案 0 :(得分:3)

由于您的数据库服务器与您的php / apache服务器不同,您需要在mysql-php连接字符串中将主机名指定为172.x1.x1.x2

还要确保mysql用户root具有远程连接权限。其他明智的mysql-server将不允许您的root用户远程登录。即从你的server1。

您可以确保来自mysql.user表。

mysql> select Host,User from user where User = "root";
+------------+------+
| Host       | User |
+------------+------+
| 127.0.0.1  | root |
| ::1        | root |
| localhost  | root |
| sgeorge-mn | root |
| %          | root |
+------------+------+
4 rows in set (0.01 sec)

%表示任何主持人。

要创建具有远程连接权限的用户,请使用以下mysql查询:

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';

答案 1 :(得分:2)

1)确保防火墙允许MySQL。

2)确保允许MySQL远程连接权限。