2012-10-17 51 views
0

将现有的drupal代码库上载到在AWS上设置的虚拟主机。它显示“无法连接到数据库”只能在AWS上连接Drupal到数据库

我创建了数据库“dbname”,并可以通过ssh连接好。但无法获得settings.php连接。据我所知,mysql用户具有远程访问数据库所需的全部权限。

我有什么

$db_url = 'mysql://username:[email protected]/dbname'; 

这里是例子的settings.php的与我们的Drupal的7个网站连接细

$databases = array (
    'default' => 
    array (
    'default' => 
    array (
     'database' => 'dbname', 
     'username' => 'dbuser', 
     'password' => 'password', 
     'host' => 'us-west-rds.amazonaws.com', 
     'port' => '3306', 
     'driver' => 'mysql', 
     'prefix' => '', 
    ), 
), 
); 
+0

我在我的drupal 7安装中遇到与ec2-rds连接相同的问题。你能告诉我你是如何解决这个问题的。 – SkyBuzz

回答

4

有几件事情要检查:

  • 你有没有打开安全组,以允许从您的服务器访问(如对方回答说,由鲍伯·金尼)?
  • 您的服务器上是否设置了防火墙,防止连接到您的RDS实例?
  • 您的用户是否有足够的权利连接到您的数据库?

调试最简单的方法是使用控制台命令mysql并尝试从那里连接到您的实例:

mysql dbname -u username -p password -h db01b2.ck1dmcn6kfws.us-west-1.rds.amazonaws.com 

如果这不工作,检查上面给出的点。如果这个工作并且不能在Drupal中工作,请检查您的PHP代码和/或Drupal配置。

+0

我连接到命令行 –

+0

drupal config?你的意思是settings.php这不是代码的问题,因为它在另一台服务器上很好连接 –

+0

其实我似乎也有类似的问题。在使用mysql实例的root用户的同一台服务器上(因此它不是防火墙或权限问题),我可以轻松更新我的Drupal 7安装,以便从RDS运行,但不能运行在Drupal 6上。 –

2

听起来像是你可能没有设置安全组允许从您的EC2实例访问。您需要确保您的数据库安全组具有入口规则,以允许来自您的EC2实例/安全组的流量。

How do I control network access to my DB Instance(s)?

+0

如果情况是这样的话,为什么drupal安装在连接 –

+0

@alex_b的不同虚拟主机上,具体取决于您如何配置安全组,可能的情况是,可以连接的虚拟主机在安全组中运行,能够。我建议你也看看j0nes answe以及他提供一些额外的可能性。 –

0

您指的是错误的主机名。

'host' => 'us-west-rds.amazonaws.com' 

每个单独的数据库实例都有它自己的主机名。您可以在AWS控制台中查看它。您当前指向的那个看起来像您打算指向RDS Web服务API端点。