mysql_real_escape_string - 访问被拒绝,具体取决于执行脚本的用户?

时间:2009-09-02 17:03:54

标签: php mysql linux

我的设置:Ubuntu LAMP,应用程序内置w / zend框架

我的问题:我有一些我通过cron触发的PHP脚本 - 每日电子邮件报告,rrd数据捕获等。我通过像'php -f scriptname.php'这样的cronjob启动它们。
当我从命令行测试脚本时,以我自己的身份登录,一切正常。但是,当相同的脚本以root身份执行时(通过cron或sudo),它会因以下错误而失败。

警告:用户'root'@'localhost'的访问被拒绝 警告:mysql_real_escape_string():无法建立指向服务器的链接...

我做了一些研究,我很确定我提前建立了与mysql的连接,虽然这个过程有点模糊,因为我正在使用zend框架 - Bootstrap类调用zend_db来调用注册表类数据库凭据。等等。

我发现了一个解决方法:'sudo -u myusername php -f scriptname.php'但我真的很想知道我在这里做错了什么..

TIA!

3 个答案:

答案 0 :(得分:2)

Warning: Access denied for user 'root'@'localhost'

这是您使用错误的用户名和密码登录mysql服务器时获得的消息,或者是您从不允许的位置登录的消息。检查root是否可以从主机'localhost'登录,并且它对您的数据库和mysql数据库有足够的权限。

'sudo -u myusername php -f scriptname.php'

也许Zend正在使用你的sysem级用户ID,并希望用它登录mysql?你可以检查或覆盖zend用来连接mysql的凭据吗?

答案 1 :(得分:0)

感谢您的时间。通过反复试验,我确定错误与我的Zend Framework实现有关。我的bootstrap,db初始化,注册表..谁知道。

虽然我喜欢与ZF合作,但像这样的简单问题变成了巨大的时间吸血鬼。我正在寻找的是一个mysql_connect()的地方!我找到的东西会更新。

非常感谢..

答案 2 :(得分:0)

如果没有数据库连接,也会出现此错误。