Php 亚马逊RDS和Zend框架2

Php 亚马逊RDS和Zend框架2,php,mysql,amazon-web-services,amazon-rds,zend-framework2,Php,Mysql,Amazon Web Services,Amazon Rds,Zend Framework2,我无法从连接到我的Amazon RDS数据库 我不断得到以下错误: 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

我无法从连接到我的Amazon RDS数据库

我不断得到以下错误:

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或Toad连接数据库没有问题,因此我认为DB安全组不是问题所在。此外,PHP应用程序也可以很好地连接到本地数据库

我想知道为什么错误消息会显示
db_user'@'localhost
。它不应该说
db_user'@'RDS主机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\''
),

根据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

根据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

问题在于dsn字符串,与其他MySQL服务器不同,AmazonRDS不理解“主机名”。如果改为“主机”,它的工作刚刚好

'dsn'=>'mysql:主机=xxxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com;dbname=zf2教程“


谢谢你的建议。

问题出在dsn字符串中,与其他MySQL服务器不同,Amazon RDS不理解“主机名”。如果改为“主机”,它的工作刚刚好

'dsn'=>'mysql:主机=xxxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com;dbname=zf2教程“


感谢所有建议。

MySQL PDO DSN需要的是主机,而不是主机名:


我刚刚在ZF2教程之后犯了同样的错误,对配置为什么忽略主机名更改感到困惑,直到我阅读了PHP PDO文档,将其更改为主机(正如您所做的),并且神奇地一切都正常运行了MySQL PDO DSN期望的是主机名,而不是主机名:


我刚刚在ZF2教程之后犯了同样的错误,不明白为什么配置忽略了主机名的更改,直到我阅读了PHP PDO文档,将其更改为主机名神奇的是,一切正常运行

用户名/密码不正确。您的主机需要是RDS的ip或网站。用户名/密码不正确。您的主机需要是RDS的ip或网站。