PHP - MySQL 访问被拒绝错误 - 适用于其他程序

Posted

技术标签:

【中文标题】PHP - MySQL 访问被拒绝错误 - 适用于其他程序【英文标题】:PHP - MySQL access denied error - Works in other programs 【发布时间】:2012-06-22 04:04:27 【问题描述】:
Access denied for user 'root '@'localhost' (using password: YES)

是的,这个错误太常见了,我花了很多时间研究它。但是没有解决问题。

在我正在开发的一个 php 脚本中尝试第一次连接时出现此错误。如果有帮助的话,我正在运行 Linux Mint 并安装了 http://community.linuxmint.com/tutorial/view/486 中详述的 LAMP 配置。

问题是,任何其他应用程序都可以连接。以 root 身份登录 PhpMyAdmin 或在控制台上以 root 身份登录 mysql 客户端都可以正常工作。 MySQL网站本身说这可能是我的代码有问题,但我还没有弄清楚……我对这些东西有点陌生,所以如果这是一个非常愚蠢的错误,请原谅我。

我在不同的页面上使用了一个外部函数(使用 require_once 导入)。这是一个不好的做法吗?无论如何,这里是:

global $sql_conn, $sql_addr, $sql_user, $sql_pass, $sql_datb;

$config=app_readconfig();
echo "<p>".$sql_addr." ".$sql_user." ".$sql_pass." ".$sql_datb."</p>";//DEBUG, shows values are read
if($config==FALSE)

    echo "<p>Error: Missing values in darkace_config.txt!</p>";
    return FALSE;

$sql_conn=mysql_connect($sql_addr,$sql_user,$sql_pass);
if(!$sql_conn)

    echo "<p>MYSQL Error: ".mysql_error()."</p>";
    return FALSE;


if(!mysql_select_db($sql_datb,$sql_conn))

    echo "<p>MYSQL Error selecting database: ".mysql_error()."</p>";
    return FALSE;

return TRUE;

调用该函数,我返回的消息是: MYSQL 错误:用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)

【问题讨论】:

如果你正在开发一个新的应用程序,我建议使用 PDO 或 mysqli,mysql_* 已经过时了。虽然这可能不是问题所在。你确定密码正确吗? 非常确定,我使用的密码与我通过控制台或 PhpMyAdmin 连接时使用的密码相同。我是 PHP、Apache 和 Linux 的新手,但我之前使用过一些 SQL。但是我不会把它算作经验。 好吧mysql是非常麻烦你没有使用正确的密码。 再次,在 PhpMyAdmin 或终端上使用相同的密码,我可以连接并正常工作。 mysql 会是对的,这里不是你,所以重置密码,简单的然后再试一次。 【参考方案1】:

您有“root[SPACE]”作为用户名。试试不带空格的“root”?

【讨论】:

我在提出问题的时代尝试过这个。我尝试删除一个空格,配置文件中没有空间可以删除。那时,我放弃了,决定推迟读取配置文件,直到我完成应用程序。我刚刚发现,有一个 CRLF 或其他东西在飘荡。 trim() 修复了它,所以我想这是最准确的答案。谢谢。【参考方案2】:

你的连接应该是这样的

$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');

不包括http,示例中添加端口号,检查用户名和密码。

如果会惹恼你,但每次使用 mysql_* 函数时,你都会得到一个 PDO 推荐。我也推荐PDO,PHP也推荐PDO,可以查看PHP Documentation for mysql_connect

【讨论】:

【参考方案3】:

您的凭证有问题。

验证:

用户名 密码 主机

另外,请停止使用 mysql_* 函数,因为它们是 now deprecated。请改用MySQLi 或PDO。

【讨论】:

我已经验证了很多次凭据......但是我将切换 mysql_* 函数并看看它是如何工作的。 使用凭据完全,因为 PHP 拥有它们。不要自己凭记忆输入。

以上是关于PHP - MySQL 访问被拒绝错误 - 适用于其他程序的主要内容,如果未能解决你的问题,请参考以下文章

防止 mysql_connect() 上的错误 - 访问被拒绝

IE 11 错误 - 访问被拒绝 - XMLHttpRequest

为啥我在 s3 上的访问被拒绝(使用适用于 Node.js 的 aws-sdk)?

WMI 访问被拒绝

跨域调用错误:XMLHttpRequest:网络错误 0x80070005,访问被拒绝

在 MySQL 中加载数据 infile 的访问被拒绝