2013-06-28 1 views
0

Drupal에서 다른 호스트 (외부 호스트)의 외부 데이터베이스에 연결하려고합니다. 왜냐하면 마이그레이션 모듈을 사용하여 컨텐트를 마이그레이션하려고하기 때문입니다. 내 settings.phpDrupal 7의 외부 데이터베이스 (다른 호스트)에 연결

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

에서 그리고를 통해 데이터베이스를 호출하는 다른 방법 메신저에서

그게 전부 :

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

을 그래서 난 경우 :

$query = Database::getConnection('default', 'for_migration') 

나타나는 오류를 먹으 렴 localhost에서 데이터베이스를 호출하면 오류가 없으며 모두 완벽하게 마이그레이션됩니다. 하지만 외부 호스트의 데이터베이스에 연결할 수 없습니다.

+0

MySQL의에

덕분에 외부 연결 – user4035

+0

을 허용하지 않는 이유는 무엇입니까? – dba

+0

host.com이 데비안 기반 Linux 배포판을 실행하는 경우 /etc/mysql/my.cnf에 있습니다. –

답변

1

내 잘못이었습니다. 원격 서버의 httpd_can_network_connect를 on으로 설정했습니다.

하지만 해결책은 로컬 컴퓨터에 설정하는 것이 었습니다. 그 후에는 외부 호스트에 연결할 수 있습니다. SELinux 문제였습니다. 나는이 구성도 찾아보실 수 있습니다 경우 다른 호스트에 아마 @fobia

1

그 이유는 다음과 같을 수 있습니다. 1) 연결 제한 (예 : 방화벽 블록). 2) 사용중인 계정이 "localhost"외부의 로그인을 허용하지 않습니다. 이 경우 '%'(어떤 주소 든 의미) 또는 액세스하는 컴퓨터 IP 주소에 대한 'mysql'데이터베이스의 'user'테이블에서 계정 호스트 이름 마스크를 편집해야합니다.

+0

mysql-database -> user-table에서 해당 계정에 대해 host = %? – dba

+0

예, 그렇게 할 것입니다. "어디에서든지"의 연결을 허용하는 것은 안전하지 않습니다. :) 당신은 여기에 대한 액세스 제어에 대한 자세한 내용을 읽을 수 있습니다 : http://dev.mysql.com/doc/refman/5.1/en/connection-access.html – fobia

+0

값을 'localhost'에서 '%'(으)로 변경했습니다. mysqld하지만 여전히 연결되지 않는다. – dba