php - 使用不同的 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 mysqli
access host IP
Remote MySQL
MySQL 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上以连接到服务器 A:Remote MySQL
conn.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.php
,www.site.com/folder/conn.php
页面没有加载,只是冻结
ping服务器 A:
解决方案
为此,您不需要服务器 A 上的 php。你只需要配置你的 MySQL 服务器(服务器 A)
- 允许网络访问(通过 IP 地址)和
- 为服务器 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
推荐阅读
- rdkit - 使用 RDkit 进行化合物分类
- permissions - 如何将 wiki.js 设置为私有 wiki?
- java - 为什么我需要将 -1 分配给 Java 中的随机数猜测器的 int
- python - Django / Models / Admin /外键问题:__str__返回非字符串(类型元组)
- mongodb - MongoDB 5.0 如何更新数组数据?
- docker - 如何添加根证书并仅保留在 docker build 时间?
- javascript - React Native (Expo) - Firebase 身份验证/“登录”在“Web 浏览器”中运行时有效,但在真实设备中超时
- c - 如何知道此开关汇编代码中的有效和缺失案例
- javascript - 提交表单时停止页面刷新
- vue.js - vue路由组件加载失败