我刚刚在Macbook上安装并配置了Apache,MySQL,PHP和phpMyAdmin,以便拥有本地开发环境。但是在我将我的一个项目移到本地服务器之后,我从一个mysql_query()调用中得到一个奇怪的MySQL错误:
拒绝用户访问 '_securityagent'@'localhost'(使用 密码:否)
首先,我发送给MySQL的查询都是有效的,我甚至通过phpMyAdmin测试它并获得了完美的结果。其次,错误消息只发生在这里,而我每页至少有4个其他mysql连接和查询。这个对mysql_query()的调用发生在一个非常长的函数的末尾,该函数处理新创建或修改过的文章的数据。这基本上就是它的作用:
非常基本,我知道。我没有认识到用户名“_securityagent”所以在快速搜索后我从Apple开发者连接的一篇文章中发现了这个问题,并谈到了一些随机错误:
Mac OS X的安全基础架构通过运行其GUI来解决此问题 代码作为特殊用户“_securityagent”。
正如Frank在评论中所建议的那样,我把一个var_dump()放在mysql_connect()调用中使用的所有变量上,并且每次返回正确的值(其中username当然不是“_securityagent”)。因此,我想知道是否有人知道为什么'securityagent'试图连接到我的数据库 - 以及当我调用mysql_query()时如何防止发生此错误。
答案 0 :(得分:1)
如果未明确指定username,则MySQL会尝试使用当前系统用户的名称来猜测它。
您不必接受,您只需要明确指定所需的用户名。
如何 - 这取决于你如何连接。如果phpMyAdmin
为config.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那样覆盖特定于机器的配置。