使用不同的PHP版本从服务器B上的PHP mysqli访问服务器A上的MySql数据库
我试图弄清楚,如何从使用不同的PHP版本从服务器B上的PHP mysqli访问服务器A上的MySql数据库,php,mysql,database,mysqli,remote-access,Php,Mysql,Database,Mysqli,Remote Access,我试图弄清楚,如何从MySql数据库表中检索记录,该数据库表位于服务器A上,即phpversion5.3.29从服务器BPHPmysqliphpversion7.2.8 我找到了这个例子,但我不明白,它是如何与我正在尝试的工作相关的,怀疑它是否是我正在寻找的 我是php新手,我能想象的就是,我应该在服务器B上使用服务器A的连接数据,在服务器A的远程MySQL中添加访问服务器B的主机IP,似乎我必须在服务器A上的MySQL数据库中添加数据库用户和密码,但我不确定,我必须在服务器B上从哪里获取它 服
MySql
数据库表中检索记录,该数据库表位于服务器A上,即phpversion5.3.29
从服务器BPHP
mysqli
phpversion7.2.8
我找到了这个例子,但我不明白,它是如何与我正在尝试的工作相关的,怀疑它是否是我正在寻找的
我是php
新手,我能想象的就是,我应该在服务器B上使用服务器A的连接数据,在服务器A的远程MySQL
中添加访问服务器B
的主机IP,似乎我必须在服务器A上的MySQL数据库中添加数据库用户和密码,但我不确定,我必须在服务器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);
}
?>
版本由phpinfo()代码>:PHP版本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)
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)
网络服务器
cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
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.7.7
Version information: 4.6.6
服务器B:
<?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);
}
?>
版本由phpinfo()代码>:PHP版本7.2.8
数据库服务器
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)
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)
网络服务器
cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
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.7.7
Version information: 4.6.6
任何建议、指南或示例都会非常有用
编辑:
我的回答尝试,首先我在远程MySQL中添加了服务器B的IP
,位于服务器A上。Myconn.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);
}
?>
但结果是,当我打开www.site.com/folder/dbtab.php
或www.site.com/folder/conn.php
时,页面不会加载,只是冻结
服务器A的ping操作
:
<?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);
}
?>
您不需要在服务器A上使用php来实现此目的。您只需要将MySQL服务器(服务器A)配置为
允许网络访问(通过IP地址)和
为服务器B的IP地址创建一个MySQL帐户
如果您已经设置好了,您可以使用以下命令从服务器B上的php创建连接
$mysqli=newmysqli(“,”用户“,”密码“,”数据库”)代码>
请访问优秀的php网站:
步骤1、2取决于您的MySQL服务器。如果您具有直接根访问权限,则需要编辑配置文件并允许联网,否则这取决于托管服务
要创建具有远程访问权限的用户帐户,请发出以下SQL语句(或使用web GUI):
在.*上授予“用户名”@代码>
请参阅MySql用户权限授予手册:我认为更重要的是两台服务器上的MySql版本(?)除非您构建一个API来抽象数据库层,否则PHP在服务器A上并不重要。您只需要直接连接到远程服务器上的MySql服务器…@Edwin Hello,我已经编辑了问题您好,我已经尝试按照您的指南进行操作,我已经编辑了我的问题,请检查,我不确定我在回答您的编辑时做错了什么:dbtab.php中有一个输入错误。第4行变量名$conn
;)中缺少一个n是的,但打字错误只出现在这篇文章中,在服务器上,我在两个文档中都有相同的conn
,我检查过,结果相同。似乎这不是失败的原因,有时我在长时间加载后出现错误504=(啊,我明白了。然后这听起来像是连接错误。可能是某个防火墙阻止了对服务器a的访问?请尝试从服务器B ping它,如果这样行得通,请查看是否可以连接到MySql端口(通常为3306)例如,通过nmap-p3306
@M.Biegert,我添加了ping结果连接失败,原因是telnet www.mysite.com 3306