Php 亚马逊RDS和Zend框架2
我无法从连接到我的Amazon RDS数据库 我不断得到以下错误: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
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或网站。