2013-06-28 64 views
0

我想连接到Drupal上另一个主机(非本地主机)上的外部数据库,因为我想使用迁移模块迁移内容。连接到Drupal 7上的外部数据库(其他主机)

多数民众赞成在我的settings.php

$databases['for_migration']['default'] = array(
    'driver' => 'mysql', 
    'database' => 'dbname', 
    'username' => 'username', 
    'password' => 'password', 
    'host' => 'other-host.com', 
    'prefix' => '', 
    'port' => '', 
); 

而在另一种方法,通过IM调用数据库:

$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). 

所以,如果我在本地主机上调用数据库,没有错误,并且所有迁移都完美无缺。但我无法连接到外部主机上的数据库。

+0

也许MySQL的其他主机上不允许外部连接 – user4035

+0

我在哪里可以找这个配置? – dba

+0

如果host.com运行基于Debian的Linux发行版,它将位于/etc/mysql/my.cnf中。 –

回答

1

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

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

由于@fobia

1

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

+0

在mysql数据库 - >用户表中,并为该帐户主机=%? – dba

+0

是的,这将做到这一点。只是保持在我的,允许从“任何地方”的连接是不安全的。 :)你可以阅读更多关于访问控制在这里:http://dev.mysql.com/doc/refman/5.1/en/connection-access.html – fobia

+0

我已经将'localhost'的值更改为'%',重新启动mysqld,但它仍然没有连接。 – dba

相关问题