【问题标题】:MySQL Permissions for CRON jobCRON 作业的 MySQL 权限
【发布时间】:2011-09-14 05:18:28
【问题描述】:

我编写了一个 PHP 脚本,每天由 CRON 执行以清理文件并删除旧的数据库条目..

脚本运行没有问题,所以我知道这不是 CRON 问题。

问题是我收到以下错误:

警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: 语法错误或访问冲突:1142 SELECT 命令拒绝用户 'username'@'localhost' 访问表/cron_removeOld.php 中的“用户”35

我为后端管理员用户使用相同的数据库凭据,所以我知道他们有 SELECT 权限。我想知道它是否与在网络服务器之外运行的脚本有关?

任何帮助将不胜感激!

Cron:

20 0 * * * php -q /home/user/public_html/tssol/contract/admin/cron_removeOld.php

PHP(第 35 行):

$stmt = $dbh->prepare("SELECT idusers, contract FROM users WHERE contractExpireDate <= NOW()");

数据库凭据位于与其他页面共享的包含文件中,因此我知道这不是问题..如果您认为有帮助,将发布

【问题讨论】:

  • 发布你的 cron 代码和 php 源代码
  • 该查询没有问题。 必须是权限问题。
  • @Jonah,有什么想法吗??我整天都在这。缺点是我们在共享主机上,所以我没有对服务器的 root 访问权限
  • web服务器、db服务器和执行cronjob的服务器是同一台机器吗?
  • @Emil,我不知道。它是一个共享托管服务器,我不知道。把我们放在这个主机上的那个人正在联系托管公司,看看他们是否有任何意见。对于数据库连接中的主机,我尝试了 localhost,并将其设置为 127.0.0.1 以查看今晚会发生什么......

标签: php mysql cron mysql-error-1142


【解决方案1】:

MySQL 权限与由 CLI 执行的 PHP 或其他任何东西无关
检查您的 mysql 用户是否具有用户表的 SELECT 权限

【讨论】:

  • 我 100% 确定它确实如此。 MySQL 用户是我用来管理后端记录的同一用户,它具有 SELECT INSERT DELETE UPDATE privs
猜你喜欢
  • 2020-04-30
  • 2019-09-19
  • 2016-02-17
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
相关资源
最近更新 更多