PHP& Mac OS X上的MySQL:GUI用户拒绝访问

时间:2009-07-29 21:43:43

标签: php mysql apache macos

我刚刚在Macbook上安装并配置了Apache,MySQL,PHP和phpMyAdmin,以便拥有本地开发环境。但是在我将我的一个项目移到本地服务器之后,我从一个mysql_query()调用中得到一个奇怪的MySQL错误:

  

拒绝用户访问   '_securityagent'@'localhost'(使用   密码:否)

首先,我发送给MySQL的查询都是有效的,我甚至通过phpMyAdmin测试它并获得了完美的结果。其次,错误消息只发生在这里,而我每页至少有4个其他mysql连接和查询。这个对mysql_query()的调用发生在一个非常长的函数的末尾,该函数处理新创建或修改过的文章的数据。这基本上就是它的作用:

  1. 收集文章表格中的所有数据(标题,内容,日期等)
  2. 验证收集的数据
  3. 连接数据库
  4. 根据经过验证的文章数据动态构建SQL查询
  5. 关闭连接前向数据库发送查询
  6. 非常基本,我知道。我没有认识到用户名“_securityagent”所以在快速搜索后我从Apple开发者连接的一篇文章中发现了这个问题,并谈到了一些随机错误:

      

    Mac OS X的安全基础架构通过运行其GUI来解决此问题   代码作为特殊用户“_securityagent”。

    正如Frank在评论中所建议的那样,我把一个var_dump()放在mysql_connect()调用中使用的所有变量上,并且每次返回正确的值(其中username当然不是“_securityagent”)。因此,我想知道是否有人知道为什么'securityagent'试图连接到我的数据库 - 以及当我调用mysql_query()时如何防止发生此错误。

2 个答案:

答案 0 :(得分:1)

如果未明确指定username,则MySQL会尝试使用当前系统用户的名称来猜测它。

您不必接受,您只需要明确指定所需的用户名。

如何 - 这取决于你如何连接。如果phpMyAdminconfig.inc.php,请添加以下行:

$cfg['Servers'][0]['user'] = 'Eirik';

(见manual

答案 1 :(得分:1)

您是使用预制软件包设置本地AMP服务器,还是通过相应的操作系统特定下载软件包安装MySQL,PHP等?设置Apache,MySQL和PHP4 / 5可以是一个真正的PITA。

如果您的设置出现问题I'd recommend MAMP。它是一个漂亮的一体化软件包,真正做到了这一点。您仍然可以访问所需的所有配置文件,并且所有内容都包含在MAMP文件夹中,而不是遍布整个系统。如果Apple升级预安装的Apache / PHP版本,则不会像使用预安装的Apache / PHP那样覆盖特定于机器的配置。