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)[重复]