从具有不同 PHP 版本的服务器 B 上的 PHP mysqli 访问服务器 A 上的 MySql 数据库

Access MySql database on the Server A from PHP mysqli on Server B with different PHP version

我想知道如何从位于 服务器 A 上的 MySql 数据库表中检索记录,即 PHP Version 5.3.29 来自 服务器 B php mysqli PHP Version 7.2.8

我找到了这个例子How to Connect to the Remote MySQL Database using PHP,但我不明白,它是如何与我正在尝试做的事情相关的,怀疑它是否是我正在寻找的东西

我是 php 的新手,我可以想象,我应该使用来自 服务器 A 的连接数据用于 php mysqli 服务器B,并在服务器A[=91的Remote MySQL中添加服务器Baccess host IP =],似乎我必须在 服务器 A 上的 MySQL databases 中添加数据库用户和密码,但我不确定,我必须在哪里获取它 服务器B

服务器 A:

版本phpinfo();PHP Version 5.3.29

Database server

Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.6.39 - MySQL Community Server (GPL)
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)

Web server

cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30

phpMyAdmin

Version information: 4.7.7

服务器 B:

版本phpinfo();PHP Version 7.2.8

Database server

Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 5.5.56-MariaDB - MariaDB Server
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)

Web server

nginx/1.11.10
Database client version: libmysql - mysqlnd 5.0.11-dev - $Id: 
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30

phpMyAdmin

Version information: 4.6.6

任何建议、指南或示例都会非常有帮助

编辑:

我的回答尝试,首先我在服务器ARemote MySQL中添加了服务器BIP。我的 conn.php,位于 Server B 上,连接到 Server A:

<?php
$servername = "Server_A_IP";
$username = "Server_A_database_user";
$password = "Server_A_database_user_password";
$db = "Server_A_database";

$conn = new mysqli($servername, $username, $password, $db);
$conn->set_charset('utf8');

if(!$conn)
{
    die ("Error on the Connection" . $conn->connect_error);
}
?>

dbtab.php 也位于 服务器 B 上,conn.php 在同一文件夹中:

<?php
 include 'conn.php';
$sql = "SELECT * FROM tab";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
    <h1 align="center">Database</h1>
    <table border="1" align="center" style="line-height:25px;">
    <tr>
    <th colspan="2">Records</th>
    </tr>
    <tr>
    <th bgcolor="#ff897f">id</td> 
    <th bgcolor="#ff897f">name</td>   
    </tr>
<?php
if($result->num_rows > 0)
{
   while($row = $result->fetch_assoc())
   {
    ?>
     <tr>
        <td bgcolor="#e5cac8"><?php echo $row['id']; ?></td>
        <td bgcolor="#e5cac8"><?php echo $row['name']; ?></td>
    <?php
   }
}
else
{
    ?>
    <tr>
    <th colspan="2">There's No data found!!!</th>
    </tr>
    <?php 
}
?>
</body>
</html>

但结果是,当我想打开 www.site.com/folder/dbtab.phpwww.site.com/folder/conn.php 时,页面没有加载,只是冻结了

ping 服务器 A:

为此,您不需要在服务器 A 上 php。您只需要将 MySQL 服务器(服务器 A)配置为

  1. 允许网络访问(通过 IP 地址)和
  2. 为服务器 B 的 IP 地址创建一个 MySQL 帐户

如果您已设置此功能,则可以使用

从服务器 B 上的 php 创建连接

$mysqli = new mysqli("<IP of Server A>", "user", "password", "database");

查看优秀的 php 网站:mysqli Connections

步骤 1、2 取决于您的 MySQL 服务器。如果您有直接的 root 访问权限,则需要编辑配置文件并允许联网,否则取决于托管服务。

要创建具有远程访问权限的用户帐户,请发出以下 SQL 语句(或使用 Web GUI):

GRANT <Rights> ON <db-name>.* TO 'username'@'<IP of Server B>';

请参阅 MySql 手册,了解如何向用户授予权限:https://dev.mysql.com/doc/refman/5.5/en/grant.html