4

我试图从另一台服务器连接到 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) 或 die($table_error); ?> 现在当我尝试连接时出现以下错误

警告:mysql_connect() [function.mysql-connect]: Host 'hr1.saqa.co.za' is not allowed to connect to this MySQL server in C:\xampp\htdocs\scripts\functions\database\connect.php on第 4 行

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

如果你能帮助我,那将是可怕的。

4

2 回答 2

3

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

还要确保 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';
于 2013-01-21T12:26:35.323 回答
2

1)确保防火墙允许 MySQL。

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

于 2013-01-21T12:33:23.177 回答