将 Apache 连接到远程 MySQL


Connect Apache to remote MySQL

我在ESXI上的虚拟VMWARE测试环境中运行两台Ubuntu服务器(ubuntu-14.10-server-amd64)。

  1. 第一个服务器是后端 mysql 服务器。IP: 192.168.253.140
  2. 第二台服务器有一个带有PHP的Apache2服务来提供网页。IP: 192.168.253.143

1 MYSQL 服务器:192.168.253.140

A) 我配置了服务器,以便 2 台特定计算机有 2 个用户,以便能够连接到特定数据库。

用户 'apache

',让 apache 服务器连接到 mysql 服务器:

create user 'apache'@'192.168.253.143' IDENTIFIED BY    'abc123';     
grant    ALL PRIVILEGES ON Modulus_Docker_IW.* TO  'apache'@'192.168.253.143'    WITH GRANT OPTION;

用户"pc",让我自己的电脑通过WAMP服务器(PHP)连接到远程mysql服务器。

create user 'pc'@'192.168.253.1' IDENTIFIED BY 'abc123';  
grant ALL PRIVILEGES ON Modulus_Docker_IW.* TO   'pc'@'192.168.253.1' WITH GRANT OPTION;
FLUSH PRIVILEGES; FLUSH HOSTS;

B)我还配置了绑定/etc/mysql/my.cnf,以便mysql服务器接受任何主机(不仅是本地主机)

bind-address = 0.0.0.0

2 APACHE服务器:192.168.253.143

Apache服务器已安装,我在服务器上上传了我的测试php页面。这是一个简单的页面,从mysqlserver上的数据库中获取用户名和密码。

我在 dreamweaver 中与"pc"用户建立了连接,我可以检索一些数据,使用 WAMP 服务器处理 PHP。

如果我将文件上传到远程 Apache 服务器,我将连接字符串更改为 apache 用户,并希望得到最好的结果。但我只是得到了一个白纸,什么都没有。

在 Apache2 中,我必须做一些事情,以允许与 mysqlserver 的传出或传入连接?

PHP码:

<?php 
$username = "pc";
$password = "abc123";
$host="192.168.253.140";
$database="Modulus_Docker_IW";
$link = mysql_connect($host, $username, $password);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db ($database, $link); 
$strSQL = "SELECT naam, paswoord FROM tblUsers ORDER BY naam ASC"; 
$result = mysql_query( $strSQL, $link );
mysql_close($link);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p>echo 'Connected successfully';<p>
<?php 
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "Naam :{$row['naam']}  <br> ".
         "--------------------------------<br>";
} 
 ?>
</body>
</html>

感谢您的评论。我现在从 apache php 获得一些调试信息。

致命错误:调用未定义的函数 mysql_connect() /var/www/html/modulus/connectHand.php 在第 7 行

好的,它解决了:在 PHP/Apache 上找到了解决方案:PHP 致命错误:调用未定义的函数 mysql_connect()

我没有在 apache 服务器上安装"sudo apt-get install php5-mysql"。

感谢您的快速回复。

好的,它解决了:在 PHP/Apache 上找到了解决方案:PHP 致命错误:调用未定义的函数 mysql_connect()

我没有在 apache 服务器上安装"sudo apt-get install php5-mysql"。

感谢您的快速回复。

检查MySQL服务器上的iptables,以确保它没有阻止连接。默认端口为 TCP/3306。此外,请检查 MySQL 配置以确保允许来自外部本地主机的连接。

另一个建议:在您的代码中,您在循环访问结果之前关闭 MySQL 连接。也许尝试将mysql_close($link)放在PHP文件的末尾?

MySQL用户与Unix系统用户不同。仅仅因为您在数据库中创建了一个名为 "apache" 的用户,并不意味着它是 PHP 程序用来连接到它的用户。如果您在这里向我们展示您的PHP代码会更好。