PHP MySQL 查询中的 MySQL/Apache 错误

2022-08-30 15:19:54

我收到以下错误:

用户“apache”@“localhost”的访问被拒绝(使用密码:NO)

使用以下代码时:

<?php

include("../includes/connect.php");

$query = "SELECT * from story";

$result = mysql_query($query) or die(mysql_error());

echo "<h1>Delete Story</h1>";

if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_row($result)){
          echo '<b>'.$row[1].'</b><span align="right"><a href="../process/delete_story.php?id='.$row[0].'">Delete</a></span>';
      echo '<br /><i>'.$row[2].'</i>';
    }
}
else {
   echo "No stories available.";
}
?>

该文件包含我的MySQL连接调用,这些调用在软件的另一部分中与我的查询一起工作正常。如果我注释掉该行,那么它将通过 else 语句。所以,它是那行或如果中的内容。connect.phpINSERT$result = mysql_query

我一直在网络上搜索任何解决方案,大多数似乎与太多的MySQL连接有关,或者我登录MySQL的用户没有权限。我已经检查了两者。我仍然可以在软件中的其他位置执行其他查询,并且我已验证该帐户是否具有正确的权限。


答案 1

如果它很重要,apache@localhost不是我用来进入数据库的用户帐户的名称。我没有任何用户帐户,其中的名称是apache。

如果它说“apache@localhost”,用户名没有正确传递到MySQL连接。“apache”通常是运行httpd进程的用户(至少在基于Redhat的系统上),如果在连接过程中没有传递用户名,MySQL将使用调用连接的人。

如果直接在脚本中而不是在被调用文件中执行连接,是否会收到相同的错误?


答案 2

将 include() 更改为 require()。如果“connect.php”文件不能为 require()d,则脚本将失败并显示致命错误,而 include() 仅生成警告。如果您传递给mysql_connect()的用户名不是“apache”,则连接脚本的错误路径是获取此类错误的最常见方法。


推荐