我想在一台服务器上使用一个网站,在另一台服务器上使用另一个网站,但是使用php和mysql只需要一个数据库。 可能吗?如果是,那怎么样?
答案 0 :(得分:3)
是。这是可能的。通常你不把你的数据库放在远程服务器上。您应该将数据库服务器保留在同一数据中心,以便利用高速内部网络链接。
如果您的网站位于主机web1
和web2
且数据库位于dbhost1
中,则在web1
和web2
中使用{{1}连接到mysql作为主机名。
dbhost1
$mysqli = new mysqli("dbhost1", "user", "pass");
$dbh = new PDO('mysql:dbname=dbname;host=dbhost1', "user", "pass");
注意:确保数据库mysql_connect("dbhost1", "user", "pass");
(在主机user@web1
上)或web1
(在主机user@web2
上)有权访问。< / p>
答案 1 :(得分:1)
您可以在给定正确设置的情况下连接到远程数据库。
如果不这样做,你可以编写一个可以从两个服务器调用的服务层。
答案 2 :(得分:0)
连接到mysql数据库时,在两台服务器上使用相同的数据库连接凭据。
答案 3 :(得分:0)
是的,为什么不呢。但是对于安全性和性能问题,我不会这样做。
问题是您在在另一台服务器下理解的是通过LAN直接连接的服务器,或者是另一个数据中心的服务器。当服务器位于另一个数据中心时,您可能会遇到很多流量和性能问题。
当服务器连接到direkt时,您可以更改my.cnf并更改行:
bind-address 127.0.0.1
然后可以从外部访问服务器。您应该为用户提供足够的权限从外部进行连接。
答案 4 :(得分:0)
是的,这是可能的。 你必须使用可从两个服务器访问的mysql服务器。并且您只需从两个服务器连接相同的主机/用户/通行证:
define("WEBDOMAIN", "94.145.22.15"); //some fake data
define("DEFDBNAME", "my_db");
define("DEFUSERNAME", "my_user");
define("DEFDBPWD", "my_pass");
mysql_connect( WEBDOMAIN, DEFUSERNAME, DEFDBPWD );
mysql_select_db( DEFDBNAME);
那应该是enaugh。如果您的托管服务提供商不允许服务器连接到外部服务器(有时端口已关闭),您可能会遇到一些问题。
答案 5 :(得分:0)
出于安全原因,您无法连接到未授权托管服务器的mysql服务器。 因此在mysql中,您必须允许用户不仅可以从localhost连接,还可以从其他主机连接(如果您已经获得了特权,可以通过编辑用户权限从phpMyAdmin进行连接)。