我在两个单独的服务器上有两个域,foo.com
和bar.com
。
我在foo
上设置了一个网站和MySQL数据库,我希望将其迁移到bar
,但bar
没有MySQL。
作为一个解决方案,我正在移动所有文件,但将数据库保留在foo
上,并远程连接到它。
我目前正在这样连接:
connect.php
$hostname = 'database.foo.com';
$username = 'username';
$password = 'password';
$dbname = 'database';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
}
catch(PDOException $e){
echo($e->getMessage());
}
这在foo.com
上工作正常,但当我将此文件迁移到bar.com
时,我收到此错误:
SQLSTATE [HY000] [2003]无法连接到'database.foo.com'上的MySQL服务器(110)
我可以在两个窗口中打开两个网站foo.com
和bar.com
,一个会工作,而另一个不会 - 尽管他们都在连接(或尝试连接) )到同一个数据库。
为什么会发生这种情况?如何纠正?
答案 0 :(得分:0)
数据库服务器未配置为侦听其他服务器可访问的网络端口。
这可能有几个原因。
通常只监听本地套接字而根本不使用TCP / IP,因为这样更有效,更安全。
该端口可能会从另一台机器上防火墙。
服务器可能只能在本地网络上访问,foo.com
可能是不同的网络,没有从bar.com
到database.foo.com
的路由。
答案 1 :(得分:0)
假设服务器B上有数据库,服务器A上有网站(说它有IP 192.234.23.12)
在cpanel上将服务器B的IP列入白名单
并创建一个在数据库中具有足够权限的新用户(比如说这个用户是测试)
然后将此用户创建为test@192.234.23.12
答案 2 :(得分:0)
您需要在 foo.com 上启用远程MySQL访问权限,方法是: foo的cpanel>数据库>远程mysql,并将栏的域添加到白名单中。 这应该有用。