带有 CPanel 的 CRON

CRON with CPanel

我想通过 CRON Cpanel 执行 SQL 查询。

这是命令:

mysql --user=MYUSERNAME --password=MYPASSWORD --database=MYDATABASE \
    --execute="LOAD DATA INFILE '/usr/local/bin/php/home/MYFILE.csv' INTO TABLE MYDATABASE.MYTABLE charset 'utf8' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 2 LINES".

这是我收到的错误消息:

ERROR 1045 (28000) at line 1: Access denied for user 'MYUSERNAME'@'localhost' (using password: YES)

您需要授予 MYUSERNAME 对 MYDATABASE 的权限。

如果您使用的是 cPanel,请转到数据库工具并创建 MYUSERNAME,然后授予其访问 MYDATABASE 的权限。

很多时候 cPanel 在用户名和数据库名前加上帐户名,因此您可能需要将命令调整为:

mysql -u account_MYUSERNAME account_MYDATABASE (...)

一定要授予用户 FILE 权限 - https://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file

经过多次尝试,我找到了答案:我必须在 CRON 命令行的路径前加上 \"。我希望这对其他人有用。

mysql --user=MYUSERNAME --password=MYPASSWORD --database=MYDATABASE --execute="LOAD DATA LOCAL INFILE \"/home/MYFILE.csv\" INTO MYDATABASE.MYTABLE FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 2 LINES“