2012-05-07 146 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文档,将其更改为主机(因为您有)并且神奇地一切正常,因为它应该