我在想,怎么可能从 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:
1条答案
按热度按时间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