【问题标题】:Connect to an external Database (other Host) on Drupal 7连接到 Drupal 7 上的外部数据库(其他主机)
【发布时间】:2013-06-28 16:17:00
【问题描述】:

我想连接到 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).

因此,如果我在 localhost 上调用数据库,则不会出现错误,并且所有迁移都完美。但我无法连接到外部主机上的数据库。

【问题讨论】:

  • 可能其他主机上的 MySQL 不允许外部连接
  • 在哪里可以找到这个配置?
  • 如果 host.com 运行基于 Debian 的 Linux 发行版,它将位于 /etc/mysql/my.cnf。
  • 它的 CentOS,但在 my.cnf 中没有类似的条目。

标签: php mysql drupal-7 connect migrate


【解决方案1】:

这可能是由于: 1)连接限制(例如防火墙块)。 2)您使用的帐户不允许在“localhost”之外登录。在这种情况下,您必须在 'mysql' 数据库中的 'user' 表上为 '%'(这意味着任何地址)或您正在访问的计算机 IP 地址编辑您的帐户主机名掩码。

【讨论】:

  • 在 mysql-database -> 用户表中,并且对于该帐户 host = % ?
  • 是的,可以的。请记住,允许从“任何地方”进行连接是不安全的。 :) 您可以在此处阅读有关访问控制的更多信息:dev.mysql.com/doc/refman/5.1/en/connection-access.html
  • 我已将值从'localhost'更改为'%',重新启动mysqld,但仍然无法连接。
  • PDOException: SQLSTATE[HY000] [2003] 无法连接到 MigrateSpeNaeMigration->__construct() 中“myIPadress”(13) 上的 MySQL 服务器 (Zeile 16 von /var/www/html/spe /sites/all/modules/migrate_spe/importSPE.inc)。
  • 我进行了一些研究,发现针对您所遇到的情况的建议之一是执行以下命令以通过 HTTPD 启用网络连接: setsebool -P httpd_can_network_connect=1
【解决方案2】:

这是我的错。我已将远程服务器上的 httpd_can_network_connect 设置为打开。

但解决方案是将其设置在我的本地计算机上。之后,我可以连接到外部主机。所以这是一个 SELinux 问题。

感谢@fobia

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多