Разрешения MySQL для работы CRON
Я написал PHP-скрипт, который будет выполняться CRON ежедневно для очистки файлов и удаления старых записей в базе данных.
У скрипта нет проблем с запуском, поэтому я знаю, что это не проблема CRON.
Проблема в том, что я получаю следующую ошибку:
Предупреждение: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: синтаксическая ошибка или нарушение доступа: 1142 Команда SELECT запрещена для пользователя 'username'@'localhost' для таблицы 'users' в /cron_removeOld.php в строке 35
Я использую те же учетные данные БД для администраторов бэкэнда, поэтому я знаю, что у них есть привилегии SELECT. Мне интересно, это как-то связано со скриптом, запускаемым за пределами веб-сервера?
Любая помощь будет принята с благодарностью!
Крон:
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()");
Кредиты БД находятся во включаемом файле, который используется совместно с другими страницами, так что я знаю, что это не проблема. Буду писать, если вы считаете, что это поможет
1 ответ
Разрешение MySQL не имеет ничего общего с PHP, выполняемым CLI или чем-то еще.
Проверьте, есть ли у вашего пользователя mysql таблица SELECT для пользователей