2

Zend Framework 2 チュートリアル アプリケーションから 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 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\''
),
4

3 に答える 3

2

問題は dsn 文字列にあることが判明しました。他の MySQL サーバーとは異なり、Amazon RDS は「ホスト名」を認識しません。「ホスト」に変更すると、問題なく動作します。

'dsn' => 'mysql:ホスト=xxxxxxxx.xxxxxxxxx.us-east-1.rds.amazonaws.com;dbname=zf2-tutorial',

すべての提案をありがとう。

于 2012-05-08T07:18:50.033 に答える
1

MySQL PDO DSNは、ホスト名ではなくホストを想定しています。

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

ZF2チュートリアルに続いて同じ間違いを犯し、構成がホスト名の変更を無視する理由について困惑しました。PHPPDOドキュメントを読み、ホストに変更しあなたが持っているように)、魔法のようにすべてが正常に機能するまで

于 2012-06-13T22:00:47.973 に答える
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
于 2012-05-07T01:10:42.953 に答える