LOAD DATA LOCAL INFILE дает ошибку, используемая команда не разрешена с этой версией MySQL

у меня есть php-скрипт, который вызывает MySQL LOAD DATA INFILE для загрузки данных из CSV-файлов. Однако на производственном сервере я получил следующую ошибку:

Доступ запрещен для пользователя ... (используя пароль: да)

в качестве быстрого обходного пути я изменил команду на LOAD DATA LOCAL INFILE в котором работала. Однако та же команда не удалась на сервере клиента с этим сообщением:

используемая команда не разрешена с этим MySQL версия

Я предполагаю, что это имеет какое-то отношение к переменной сервера: local_infile = off как рассказали здесь.

пожалуйста, предложите обходной путь, который не включает в себя изменение настроек сервера. Обратите внимание, что утилита phpMyAdmin, установленная на том же сервере, принимает CSV-файлы, хотя я не уверен, что она использует LOAD DATA (LOCAL) INFILE.

3 ответов


столкнулся с той же проблемой, что и root, и бросил меня на мгновение

может быть проблема с настройками сервера, установленными с compile

чтобы проверить вход в консоль с тем же пользователем и попробовать команду load data

Если вы получите ту же ошибку, попробуйте закрыть консоль и запустить

mysql -u USER -p --local-infile=1 DATABASE

теперь попробуйте снова запустить команду load data

если это работает, то вам нужно перезапустить mysqld с опцией командной строки или переустановить с помощью параметр конфигурации

ссылки (ссылки для 5.0, но работали для меня с 5.5):

http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html

http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_local-infile


Я занимался решением около 1 часа, наконец, я обнаружил, что мне нужно подключиться к базе данных, как это $dbh не=функцию mysql_connect($сервер$значения dbuser,$dbpass в качестве,ложное,128);

передача 128 в параметре flags является ключом.

см.http://www.php.net/manual/en/mysql.constants.php#mysql.client-flags чтобы узнать больше о флагах.


взгляните на этот список разрешений, вы можете добавить их по отдельности, т. е. вы можете вставлять, но не обновлять, или удалять, но не выбирать и т. д...

ALL [PRIVILEGES]    Grant all privileges at specified access level except GRANT OPTION
ALTER   Enable use of ALTER TABLE
ALTER ROUTINE   Enable stored routines to be altered or dropped
CREATE  Enable database and table creation
CREATE ROUTINE  Enable stored routine creation
CREATE TEMPORARY TABLES     Enable use of CREATE TEMPORARY TABLE
CREATE USER     Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES
CREATE VIEW     Enable views to be created or altered
DELETE  Enable use of DELETE
DROP    Enable databases, tables, and views to be dropped
EVENT   Enable use of events for the Event Scheduler
EXECUTE     Enable the user to execute stored routines
FILE    Enable the user to cause the server to read or write files
GRANT OPTION    Enable privileges to be granted to or removed from other accounts
INDEX   Enable indexes to be created or dropped
INSERT  Enable use of INSERT
LOCK TABLES     Enable use of LOCK TABLES on tables for which you have the SELECT privilege
PROCESS     Enable the user to see all processes with SHOW PROCESSLIST
REFERENCES  Not implemented
RELOAD  Enable use of FLUSH operations
REPLICATION CLIENT  Enable the user to ask where master or slave servers are
REPLICATION SLAVE   Enable replication slaves to read binary log events from the master
SELECT  Enable use of SELECT
SHOW DATABASES  Enable SHOW DATABASES to show all databases
SHOW VIEW   Enable use of SHOW CREATE VIEW
SHUTDOWN    Enable use of mysqladmin shutdown
SUPER   Enable use of other administrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command
TRIGGER     Enable trigger operations
UPDATE  Enable use of UPDATE
USAGE   Synonym for “no privileges”

Я думаю, что у вас есть разрешение выбирать, удалять, вставлять, обновлять, но не делать другие вещи,

используйте эту команду:

SHOW GRANTS

он покажет вам, что вы способны, в моем случае.

jcho360> show grants;
+-------------------------------------------------------+
| Grants for jbolivar@localhost                         |
+-------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'jbolivar'@'localhost' |
+-------------------------------------------------------+
1 row in set (0.00 sec)