我想连接到Drupal上另一台主机(不是localhost)上的外部数据库,因为我想使用迁移模块迁移内容。
我的settings.php中的那些
$databases['for_migration']['default'] = array(
'driver' => 'mysql',
'database' => 'dbname',
'username' => 'username',
'password' => 'password',
'host' => 'other-host.com',
'prefix' => '',
'port' => '',
);
另一种方法是通过以下方式调用数据库:
$query = Database::getConnection('default', 'for_migration')
显示出现的错误:
PDOException: SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'host.com' (13) in MigrateMigration->__construct() (Zeile 16 von /var/www/html/x/sites/all/modules/migrate_x/x.inc).
因此,如果我在localhost上调用数据库,则没有错误,所有迁移都完美无缺。但我无法连接到外部主机上的数据库。
答案 0 :(得分:1)
这可能是由于: 1)连接限制(例如防火墙块)。 2)您使用的帐户不允许在“localhost”之外登录。在这种情况下,您必须在'mysql'数据库的'user'表中编辑您的帐户主机名掩码,以查找'%'(即任何地址)或您正在访问的计算机IP地址。
答案 1 :(得分:1)
这是我的错。我已将远程服务器上的httpd_can_network_connect设置为on。
但解决方案是将其设置在我的本地计算机上。之后我可以连接到外部主机。所以这是一个SELinux问题。
感谢@fobia