2012-10-17 53 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端點。