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] 时,都会出现上述错误。包含数据库操作的操作也显示错误....在本地主机中它工作正常....

4

2 回答 2

4

它绝对是一个身份验证问题:

SQLSTATE [28000] [1045] 的各种谷歌结果都指向身份验证错误。您可以尝试使用 liveaide_dbuser1'@'localhost 而不是 liveaide_dbuser1'@'lynx-u.znetindia.net - 也许有一些问题.. 但前提是数据库服务器位于 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)

在运行 Zend Framework 应用程序的同一主机上运行此测试 PHP 脚本。这很重要,因为从一个主机连接而不是从另一台主机连接时,相同的用户名可能有效。如果您通过指定主机名调用 IP,则用户名甚至可能被授权通过环回方法(即“localhost”)进行连接,但不能来自同一主机。

如果那段对您来说没有意义,请阅读MySQL 访问权限系统,直到它有意义为止。

于 2010-01-12T18:52:03.303 回答