0
Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[28000] [1045] Access denied for user 'liveaide_dbuser1'@'lynx-u.znetindia.net' (using password: YES)' in /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php:144 Stack trace: #0 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect() #1 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Abstract.php(447): Zend_Db_Adapter_Pdo_Mysql->_connect() #2 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php(235): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Select), Array) #3 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Abstract.php(705): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Select), Array) #4 /home/liveaide/public_html/aider20test/zyberops/application/modules/default/models/Users.php(33): Zend_Db_Adapter_Abstract->fetchAll(Object(Zend_Db_Sel in /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php on line 144

config.ini で

[一般] db.adapter = PDO_MYSQL db.config.host = xxxhost db.config.username = ユーザー名 db.config.password = パスワード db.config.dbname = dbname

acl.roles.user = null acl.roles.admin = ユーザー

index.php で

$config     = new Zend_Config_Ini('./application/config.ini','general');
$registry   = Zend_Registry::getInstance();
Zend_Registry::set('config',$config);

$db         = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);

すべての資格情報を非常に正確に提供しましたが、データベース [loginAction] にアクセスしようとするたびに上記のエラーが発生しました。また、データベース操作を含むアクションでエラーが表示されます .... localhost では正常に動作します....

4

2 に答える 2

4

それは間違いなく認証の問題です:

SQLSTATE[28000] [1045] に対するさまざまな Google の結果は、すべて認証エラーを示しています。liveaide_dbuser1'@'lynx-u.znetindia.net の代わりに liveaide_dbuser1'@'localhost を試してみてください - いくつか問題があるかもしれませんが、DB サーバーが Web サーバー上にある場合に限ります。

認証資格情報が正しいことを確認しますか?

編集:わかりました、代わりに:

$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());

できますか:

$db = Zend_Db::factory('pdo', array('user'=>'MyDbUser', 'pass' => 'MyPassword', etc);

では、正しい値が渡されていることを確認できますか? (実際の正しい引数を私の例に置き換えてください)。

于 2010-01-12T18:34:52.073 に答える
0

Zend_Db_Adapter_Pdo_Mysqlアダプターを使用している場合は、PDOでテストする必要があります。プレーンなext/mysql APIを使用したテストでは、リンゴとリンゴを比較していません。

<?php
$pdo = new PDO("mysql:host=lynx-u.znetindia.net;dbname=test", 
    "liveaide_dbuser1", "XXXX");
echo "Test successful"; // no exception thrown
?>

(もちろん、XXXXの代わりにパスワードを入力してください)

このテストPHPスクリプトは、ZendFrameworkアプリケーションを実行するのと同じホストで実行します。同じユーザー名が、別のホストからではなく、あるホストから接続するときに機能する可能性があるため、これは重要です。ホスト名を指定してIPを呼び出す場合、ユーザー名はループバック方式(つまり、「localhost」)を介して接続することを許可される場合もありますが、同じホストからは許可されません。

その段落が意味をなさない場合は、意味がわかるまでMySQLアクセス特権システムについて読んでください。

于 2010-01-12T18:52:03.303 に答える