【问题标题】:ERROR!:SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)错误!:SQLSTATE [HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)
【发布时间】:2015-07-31 11:04:01
【问题描述】:

我已经阅读了很多关于这个错误的其他问题,但它并没有解决我的问题,这就是我提出这个问题的原因,尽管很明显很多人在我之前一直在问这个问题。

这是我的connect.php

<?php

$user = 'root';
$pass = '';


try{
    $dbh = new PDO('mysql:host=localhost;dbname=Login', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row){
        print_r($row);
    }

    $dbh = null;
} catch (PDOException $e){
    print "ERROR!:" . $e->getMessage() . "<br/>";
    die();

}

但是我遇到了麻烦,我确定 $user 和 $pass 是正确的,但我仍然不断收到此消息,我是 PDO 的新手 - 这与它有什么关系吗?

当我在本地主机上加载它时,我收到错误消息:

ERROR!:SQLSTATE[HY000] [1045] 拒绝用户访问 'root'@'localhost'(使用密码:NO)

对我来说,这条错误消息似乎告诉我$pass = 'NO' 不是,或者 $pass 是错误的?我尝试更改$pass = 'NO'; 并收到以下错误:

ERROR!:SQLSTATE[HY000] [1045] 拒绝用户访问 'root'@'localhost'(使用密码:YES)

然后 - 在这里装傻我改变$pass = 'YES'; 给我这个错误:

ERROR!:SQLSTATE[HY000] [1045] 拒绝用户访问 'root'@'localhost'(使用密码:YES)

【问题讨论】:

  • 您必须将正确的root密码添加到$pass
  • 如果您提供了正确的用户名和密码,请检查您使用的数据库的用户权限。
  • using password 短语不会回显您正在使用的 what 密码,无论您是否使用密码。您的 root 帐户密码错误。

标签: php mysql database pdo


【解决方案1】:

如果您使用的是wamp,这可能是一个可行的解决方案。

-> 将localhost 更改为127.0.0.1。 于是就变成了

<?php

$user = 'root';
$pass = '';


try{
    $dbh = new PDO('mysql:host=127.0.0.1;dbname=Login', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row){
        print_r($row);
    }

    $dbh = null;
} catch (PDOException $e){
    print "ERROR!:" . $e->getMessage() . "<br/>";
    die();

}

另外,只需将所有连接代码放在不同的文件中,例如“dbconnector.php”。将它包含在您需要使用数据库的每个页面中。现在您可以通过$dbh 变量访问连接。

【讨论】:

  • 感谢您的快速回复,我现在已将 localhost 更改为 127.0.0.1 - 我在使用 mamp 的 Mac 上,但现在它又抛出了另一个错误:“ERROR!:SQLSTATE[HY000] [2002] 连接被拒绝”。这让我认为这可能是因为 - 正如 cmets 所提到的。即使很难,我相信 99% 肯定 $pass = '';一定是别的东西?有什么想法吗?
  • @Anders 我真的不确定 Mac 上的工作情况。但大多数情况下,Windows 上每个 wamp 安装的 mysql 密码都是empty。尝试上传到服务器并进行测试?
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 2020-01-16
  • 2020-08-20
  • 2018-07-22
  • 2017-11-05
  • 2015-08-16
  • 2021-09-01
相关资源
最近更新 更多