【问题标题】:Access Denied Connecting to MySQL with PHP访问被拒绝使用 PHP 连接到 MySQL
【发布时间】:2018-05-19 21:59:08
【问题描述】:

我知道已经有很多线程在问这个问题,但我已经在这个问题上待了几个小时,而且不知所措。我正在尝试使用以下 PHP 连接到我在 MacBook 上运行的 MySQL 数据库:

<?php
DEFINE('DB_USER', 'webuser');
DEFINE('DB_PASSWORD', 'thispassword');
DEFINE('DB_HOST', '127.0.0.1:3306');
DEFINE('DB_NAME', 'learning_accounts');

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die('Error connecting: ' .
mysqli_connect_error()
);

?>

返回以下错误:

Error connecting: Access denied for user 'webuser'@'localhost' (using password: YES)

我可以通过终端正常连接,即使尝试使用 PHP 和 root 连接也不起作用。我是 PHP 和 MySQL 的新手,所以任何指导和见解都将不胜感激!

我尝试了很多解决方案,例如授予权限、刷新权限、创建新用户、使用 PDO,但没有任何效果 - 请帮助!

非常感谢,我讨厌学习新语言,因为一开始调试时我会迷路!

更新

我为我的 root 帐户设置了密码,但是将 DB_PASSWORD 变量更改为 '' 会将错误更改为:连接错误:未知数据库 'learning_accounts'

更新 2 我已经解决了这个问题,检查我的答案,看看如何,如果你有这个问题,那么我希望你能很快找到这个线程!

  • 扎克·L

【问题讨论】:

  • 错误显示您正在尝试连接到localhost;您的代码显示您正在连接到127.0.0.1:3306。它是哪一个?对于 MySQL,这些是不同的。首先,摆脱3306,它应该没有必要。接下来,尝试从localhost 和127.0.0.1 添加webuser 的访问权限。

标签: php mysql


【解决方案1】:

问题是我已经单独安装了 php,并创建了我的数据库,然后安装了 XAMPP 并尝试连接到该数据库。正确的方法是使用 php my admin 创建数据库,它是 XAMPP 附带的,它有自己的 php、MySQL 和 apache,你必须使用它们才能正常工作。

【讨论】:

    【解决方案2】:

    如果您在本地服务器上工作,则无需输入密码,只需将其设为“空白”即可。

        define('DB_HOST', 'localhost');    
        define('DB_USER', 'root');
        define('DB_PASSWORD', '');
        define('DB_NAME', 'learning_accounts');
    
    $conn = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
    if (!$link) {
        die("Database connection failed: " . mysqli_error());
    }
    

    如果您在服务器上工作,只需更改DB_USER、DB_PASSWORD 和DB_NAME。 如果仍然无法连接,请检查数据库名称是否正确。

    如果一切顺利,您必须检查以下链接

    How to install MySQLi

    【讨论】:

    • 嗯,我为我的 root 帐户设置了密码,但删除会将错误更改为:Error connecting: Unknown database 'learning_accounts'
    • @Zacx,检查您的数据库名称。您确定数据库是用正确的名称创建的吗?你是在本地主机还是服务器上工作?
    • 数据库名称是正确的,我在本地主机上工作 - 我在我的 macbook 上做这一切,从我的搜索中发现 mac 与 mysqli 有一些问题
    • 查看这个已接受的答案stackoverflow.com/questions/20458864/…
    • 啊,看起来很有希望,不幸的是我没有使用 MAMP,我使用的是 XAMPP
    【解决方案3】:

    正如@DontPanic 在他的评论中建议的那样,从127.0.0.1:3306 中删除3306。

    如果您使用 XAMPP、WAMP 或 EasyPHP,默认情况下不会设置 MySQL 密码。因此你应该使用

    DEFINE('DB_USER', 'root'); // default user name
    DEFINE('DB_PASSWORD', ''); // empty password just open single quote and close
    

    【讨论】:

    • 从终端使用 mysql 时,它强制我创建一个密码,所以它不是空白的。奇怪的是,当我将其设为空白时,它会给出错误Error connecting: Unknown database 'learning_accounts'
    • 您是如何创建数据库和表的?使用 phpMyAdmin 对吗?如果是,当您尝试登录 phpMyAdmin 控制台时,它会询问您用户名和密码。因此,在您的代码中也使用相同的用户名和密码。
    • 我通过mac终端使用sql命令创建了数据库和表。
    【解决方案4】:

    尝试将“DB_HOST”更改为“localhost”。 如果没有解决问题,那么重新安装你的mysql服务器

    【讨论】:

    • 已经尝试过了,不幸的是不起作用:/ 我有一个新的奇怪问题,当我将密码更改为 '' 时,它给了我一个新错误:Error connecting: Unknown database 'learning_accounts'
    【解决方案5】:

    如果您尝试了特权等大量解决方案,那么您可以创建另一个帐户并尝试一下。

    如果出现同样的问题,那就是mysql服务/守护进程的问题。

    我之前也有同样的经历。

    所以当时我重新安装了mysql服务器,问题就解决了。

    【讨论】:

      【解决方案6】:

      您可能有一个匿名用户 ''@'localhost' 或 ''@'127.0.0.1'

      【讨论】:

      • 你也可以检查 MySQL 用户权限,如果你真的有那个名字的用户
      • 原来我确实有这样的用户,但我删除了它,没有任何变化。谢谢你:)
      猜你喜欢
      • 2015-06-21
      • 1970-01-01
      • 2013-05-13
      • 2016-02-07
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多