我想连接到 Drupal 上另一台主机(不是本地主机)上的外部数据库,因为我想使用迁移模块迁移内容。
那是我的 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).
所以如果我在本地主机上调用数据库,没有错误并且所有迁移都完美。但我无法连接到外部主机上的数据库。
这可能是由于: 1) 连接限制(例如防火墙阻止)。 2) 您使用的帐户不允许在“本地主机”之外登录。在这种情况下,您将必须在“mysql”数据库内的“用户”表上为“%”(这意味着任何地址)或您访问的机器 IP 地址编辑您的帐户主机名掩码。
是我的错。我已将远程服务器上的 httpd_can_network_connect 设置为打开。
但解决方案是在我的本地机器上设置它。之后我可以连接到外部主机。所以这是一个 SELinux 问题。
感谢@fobia