使用不同的php版本从服务器b上的php mysqli访问服务器a上的mysql数据库

hgncfbus  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(425)

我在想,怎么可能从 MySql 数据库表,位于服务器a上 PHP Version 5.3.29 从服务器b php mysqli PHP Version 7.2.8 我发现这个例子如何使用php连接到远程mysql数据库,但我不明白,它是如何工作的,与我正在尝试做的事情有关,怀疑它是否是我正在寻找的
我是新来的 php ,我所能想象的,应该是使用服务器a的连接数据 php mysqli 在服务器b上,添加 access host IP 中的服务器b Remote MySQL 似乎我必须添加数据库用户和密码 MySQL databases 在服务器a上,但我不确定,我必须在服务器b上从哪里获取它
服务器a:
版本依据 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)

web服务器

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)

web服务器

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

任何建议、指南或例子都会很有帮助
编辑:
我的回答,首先我已经补充了 IP 中的服务器b Remote MySQL 在服务器a上。我的 conn.php ,位于服务器b以连接到服务器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.php 或者 www.site.com/folder/conn.php ,页面不加载,只是冻结
服务器a的ping:

cclgggtu

cclgggtu1#

您不需要在服务器上使用php来实现这一点。您只需要将mysql服务器(servera)配置为
允许网络访问(通过ip地址)和
为服务器b的ip地址创建一个mysql帐户
如果您已经设置了这个,那么可以使用 $mysqli = new mysqli("<IP of Server A>", "user", "password", "database"); 请参见优秀的php网站:mysqli connections
步骤1、2取决于您的mysql服务器。如果您具有直接根访问权限,则需要编辑配置文件并允许联网,否则这取决于托管服务。
要创建具有远程访问权限的用户帐户,请发出以下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

相关问题