这个问题首先发布在Stack Overflow上,但因为它可能与服务器问题一样多,但我也可以在这里发布它.
我刚刚在Macbook上安装并配置了Apache,MySQL,PHP和phpMyAdmin,以便拥有本地开发环境.但是在我将我的一个项目移到本地服务器之后,我从一个mysql_query()调用中得到了一个奇怪的MySQL错误:
Access denied for user
‘_securityagent’@’localhost’ (using
password: NO)
首先,我发送给MySQL的查询都是有效的,我甚至通过phpMyAdmin测试它并获得了完美的结果.其次,错误消息只发生在这里,而我每页至少有4个其他的mysql连接和查询.这个对mysql_query()的调用发生在一个非常长的函数的末尾,该函数处理新创建或修改过的文章的数据.这基本上是它的作用:
>收集文章表格中的所有数据(标题,内容,日期等).
>验证收集的数据
>连接数据库
>根据经过验证的文章数据动态构建SQL查询
>在关闭连接之前将查询发送到数据库
非常基本,我知道.我没有认出用户名“_securityagent”所以在快速搜索之后我从Apple的Developer Connection上发现了一些关于随机错误的文章:
Mac OS X’s security infrastructure gets around this problem by running its GUI
code as a special user, “_securityagent”.
然后我尝试在mysql_connect()调用中使用的所有变量上放置一个var_dump(),并且每次返回正确的值(其中username当然不是“_securityagent”).因此,我想知道是否有人知道为什么’securityagent’试图连接到我的数据库 – 以及当我调用mysql_query()时如何防止发生此错误.
更新:这是我用来连接数据库的确切代码.但必须遵循一点解释:
>在class_1中的函数X中调用mysql_query()时发生连接错误
> class_1使用class_2连接数据库
> class_2使用数据库连接变量(host,user,pass,db)读取配置文件
> class_2通过以下函数连接到数据库:
var $SYSTEM_DB_HOST = "";
function connect_db() {
// Reads the config file
include('system_config.php');
if (!($SYSTEM_DB_HOST == "")) {
mysql_connect($SYSTEM_DB_HOST, $SYSTEM_DB_USER, $SYSTEM_DB_PASS);
@mysql_select_db($SYSTEM_DB);
return true;
} else {
return false;
}
}