0

我在使用 zend 框架和与数据库的连接时遇到问题,我正在尝试创建一个登录名,创建了表,并且代码显然很好,但是给了我这个:

An error occurred
Application error
Exception information:

Message: SQLSTATE[HY000] [1045] Access denied for user 'onetag51_teste'@'localhost' (using  password: YES)
Stack trace:

#0 C:\xampp\Zend\library\Zend\Db\Adapter\Pdo\Mysql.php(109):   Zend_Db_Adapter_Pdo_Abstract->_connect()
#1 C:\xampp\Zend\library\Zend\Db\Adapter\Abstract.php(860): Zend_Db_Adapter_Pdo_Mysql->_connect()
#2 C:\xampp\Zend\library\Zend\Db\Adapter\Abstract.php(930): Zend_Db_Adapter_Abstract->quote('pass1', NULL)
#3 C:\xampp\Zend\library\Zend\Auth\Adapter\DbTable.php(449): Zend_Db_Adapter_Abstract->quoteInto('`password` = ?', 'pass1')
#4 C:\xampp\Zend\library\Zend\Auth\Adapter\DbTable.php(368): Zend_Auth_Adapter_DbTable->_authenticateCreateSelect()
#5 C:\xampp\Zend\library\Zend\Auth.php(117): Zend_Auth_Adapter_DbTable->authenticate()
#6 C:\xampp\htdocs\Eulen\application\controllers\AuthenticationController.php(27): Zend_Auth->authenticate(Object(Zend_Auth_Adapter_DbTable))
#7 C:\xampp\Zend\library\Zend\Controller\Action.php(516): AuthenticationController->logininAction()
#8 C:\xampp\Zend\library\Zend\Controller\Dispatcher\Standard.php(308): Zend_Controller_Action->dispatch('logininAction')
#9 C:\xampp\Zend\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#10 C:\xampp\Zend\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#11 C:\xampp\Zend\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#12 C:\xampp\htdocs\Eulen\public\index.php(26): Zend_Application->run()
#13 {main}  

Request Parameters:

array (
'controller' => 'authentication',
'action' => 'loginin',
'module' => 'default',
 )  

我正在寻找解决方案,其中一些可能的错误是拼写错误(我没有找到任何错误),无法使用我的通行证和用户连接到 phpmyadmin(如果我访问 phpmyadmim 站点,我可以使用用户名和密码)。

我尝试了几种解决方案,但我无法弄清楚。

我是不是错过了什么。

文件 config.ini:

 resources.db.params.charset = "utf8"
 resources.db.adapter = "pdo_mysql"
resources.db.params.host = localhost
resources.db.params.username = "onetag51_teste"
resources.db.params.password = "*******"
resources.db.params.dbname = "onetag51_eulenhugo"

最好将身份验证控制器放在这里,也许问题就在那里..

 <?php

 class AuthenticationController extends Zend_Controller_Action
{

 public function init()
 {
    /* Initialize action controller here */
}

public function indexAction()
{
    // action body
}

public function logininAction()
{
    // action body
    $authAdapter =$this->getAuthAdapter();
    $username='hugo';
    $password='pass1';

    $authAdapter->setIdentity($username)
                ->setCredential($password);

    $auth =Zend_Auth::getInstance();
    $result = $auth->authenticate($authAdapter);
    if($result->isValid())
    {
        echo 'valid';
    }
    else
    {
        echo 'invalid';
    }
}

public function logoutAction()
{
    // action body
}
private function  getAuthAdapter()
{
    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
    $authAdapter->setTableName('users')
                ->setIdentityColumn('username')
                ->setCredentialColumn('password');

    return $authAdapter;
}              


}

我一直在和我的一个朋友交谈,他告诉我,我需要设置通过 zend 访问 phpmyadmim 的权限...

我怎样才能做到这一点?

4

2 回答 2

0

你不需要在你的配置文件中使用你的 adpater、用户名、密码和 dbname 的引号。我的没有,希望对你有帮助。

我发现更多阅读可能有助于用户@'localhost'拒绝访问数据库'',因为它提到

如果您想从外部访问数据库(即网页),则需要向用户授予权限。在答案中。

还有这个关于将用户添加到mysql中的数据库的链接。

希望这可以帮助

于 2013-02-05T13:13:15.853 回答
0

所以问题与权限有关,感谢 ARJMP,我尝试更改权限,但主机没有让我这样做,所以我所做的是使用 xamp 创建本地数据库并尝试使用我在 xamp 中创建的数据库登录,并且它起作用了...

于 2013-02-23T03:31:50.580 回答