首页 > 解决方案 > 使用不同的 PHP 版本从服务器 B 上的 PHP mysqli 访问服务器 A 上的 MySql 数据库

问题描述

我试图弄清楚,如何从MySql位于服务器 A上的数据库表中检索记录,该服务器PHP Version 5.3.29来自 服务器 B php mysqli PHP Version 7.2.8

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

我是新手php,我能想象的一切,我应该在服务器 B 上使用来自服务器 A 的连接数据,服务器A添加服务器B,似乎我必须在其中添加数据库用户和密码在服务器 A上,但我不确定,我必须在 服务器 B上的哪里获取它php mysqliaccess host IPRemote MySQLMySQL databases

服务器甲

版本phpinfo();PHP Version 5.3.29

数据库服务器

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)

网络服务器

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

数据库服务器

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)

网络服务器

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

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

编辑:

我的回答是,首先我在服务器 A上添加IP服务器 B。My ,位于服务器 B上以连接到服务器 ARemote MySQLconn.php

<?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

在此处输入图像描述

标签: phpmysqldatabasemysqliremote-access

解决方案


为此,您不需要服务器 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


推荐阅读