2012-05-07 192 views
2

我有連接到我的亞馬遜RDS數據庫從a Zend Framework 2 tutorial application.亞馬遜RDS和Zend框架2

我不斷收到以下錯誤的問題:

PDOException: SQLSTATE[28000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES) in C:\wamp\www\zf2-tutorial\vendor\ZendFramework\library\Zend\Db\Adapter\Driver\Pdo\Connection.php on line 214 

我無法連接到使用MySQL Workbench中的數據庫沒有問題或蟾蜍,所以我不認爲數據庫安全組是問題。而且,PHP應用程序也可以很好地連接到本地數據庫。

我想知道爲什麼錯誤消息說db_user'@'localhost。難道不應該說db_user'@'RDS host url

我的連接字符串是:

'driver' => array(
'driver' => 'Pdo', 
'dsn' => 'mysql:hostname=xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com;dbname=zf2-tutorial', 
'username' => 'db_user', 
'password' => 'xxxxxxx', 
'driver_options' => array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
), 
+0

用戶名/密碼不正確。 –

+0

您的主機需要爲RDS的IP地址或網站。 –

回答

1

主機變量添加到您的配置,按照Zend的文檔

'driver' => array(
    'driver' => 'Pdo', 
    'dsn' => 'mysql:hostname=xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com;dbname=zf2-tutorial', 
    'username' => 'db_user', 
    'password' => 'xxxxxxx', 
    'host' => 'xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com', // Possible here 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
    ), 
), 
'host' => 'xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com', // Most likely here 
2

原來,問題是在DSN字符串,不像其他的MySQL服務器, Amazon RDS不理解「主機名」。如果更改爲「主機」,它工作得很好!

'DSN'=> '的MySQL:主機 = xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com; DBNAME = ZF2教程',

感謝所有的建議。

1

MySQL的PDO DSN預計主機,而不是主機名:

http://php.net/manual/en/ref.pdo-mysql.connection.php

我剛剛犯同樣的錯誤之後的ZF2教程,百思不得其解,爲什麼配置無視主機名的變化,直到我閱讀PHP PDO文檔,將其更改爲主機(因爲您有)並且神奇地一切正常,因爲它應該