mysql_connect() 总是拒绝访问

Posted

技术标签:

【中文标题】mysql_connect() 总是拒绝访问【英文标题】:mysql_connect() always denies access 【发布时间】:2012-04-23 19:14:56 【问题描述】:

我使用 MAMP 运行 phpMyAdmin,但我发现无法使用 mysql_connect()。

$_db_connect = mysql_connect("root", "localhost");

在 php_error.log 中产生错误:mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'root'@'localhost' (using password: NO) in /....../common.lib.php on line 19

我已经查看了权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION

GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

我简直被难住了。我创建了带有密码的新用户只是为了获得相同的结果。奇怪的是,它总是说 (using password: NO),即使我尝试以用户身份使用密码连接:

$_db_connect = mysql_connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);

欢迎任何建议。谢谢!

【问题讨论】:

php.net/manual/en/function.mysql-connect.php 第三个参数应该是密码 您的根用户有密码。 mysql_connect('localhost', 'mysql_user', 'mysql_password'); 尝试密码“root”,另见我的答案。 【参考方案1】:

您在函数中缺少密码。此外,函数调用是错误的。这样做:

$_db_connect = mysql_connect("localhost", "root", "password");

其中,password 是您的 root 帐户的密码。可能会有所不同。

【讨论】:

我已经尝试过了,正如我在原始帖子中所说的那样。另外,我的 root 帐户没有密码。 但错误声明指出:'*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' 作为您的 root 密码(显然已加密)。【参考方案2】:

传递密码,作为第三个参数

$_db_connect = mysql_connect("localhost", "root", "password");

【讨论】:

【参考方案3】:

mysql_connect 函数中的第一个参数是 db host,您需要使用 3 个参数 - 才能使用密码。

所以使用这个语法:

$db = mysql_connect('localhost', 'mysql_user', 'mysql_password');

【讨论】:

【参考方案4】:

傻瓜的错误信息:

Access denied for user 'root'@'localhost' (using password: NO)

它分为三个部分,每个部分都包含重要信息。让我们看看:

    拒绝访问 - 简单来说,这意味着:迷路!不要尝试连接到我。 for user 'root'@'localhost' - 表示谁被拒绝访问,那个用户。名称:root,在 (@) 以下服务器:localhost使用密码:否 - 只是一些很好的附加信息,当尝试访问并提供用户名时,没有使用密码。

那么现在就使用你拥有的权限吧:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
 IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B'
 WITH GRANT OPTION
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

它基本上说,用户'root'@'localhost' 需要使用密码才能访问。正如错误消息告诉您的那样,您没有使用密码。所以这很可能是错误的原因,密码丢失。

添加密码并重试。

【讨论】:

【参考方案5】:

您忘记输入密码了。如果我猜对了,那是哈希 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B 密码“root”(确认输入此 SQL 语句:SELECT PASSWORD('root')

尝试使用正确的密码登录:

$_db_connect = mysql_connect("localhost", "root", "root");

【讨论】:

以上是关于mysql_connect() 总是拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysql_connect():用户'root'@'localhost'的访问被拒绝(使用密码:NO)[重复]

尝试访问远程数据库时 mysql_connect 访问被拒绝错误

为啥使用CMD命令中的find命令总是拒绝访问?

Mysql 无法连接 - 访问被拒绝(使用密码是)

nginx匹配url进行拒绝访问

Spring Security 总是返回 403 被禁止,访问被拒绝