LOAD DATA LOCAL INFILE дает ошибку. Используемая команда не допускается с этой версией MySQL
У меня есть PHP script, который вызывает MySQL LOAD DATA INFILE
для загрузки данных из файлов CSV. Однако на рабочем сервере у меня была следующая ошибка:
Доступ запрещен для пользователя... (с использованием пароля: да)
В качестве быстрого обходного пути я сменил команду на LOAD DATA LOCAL INFILE
, которая сработала. Однако эта же команда не удалась на клиентском сервере с этим сообщением:
Используемая команда не допускается с этой версией MySQL
Я предполагаю, что это имеет какое-то отношение к переменной сервера: local_infile = off
, как описано здесь.
Пожалуйста, предложите обходное решение, которое не связано с изменением настроек сервера. Обратите внимание, что утилита phpMyAdmin, установленная на том же сервере, кажется, принимает файлы CSV, хотя я не уверен, что она использует LOAD DATA (LOCAL) INFILE
.
Ответы
Ответ 1
Входите в ту же проблему, что и root, и бросили меня на мгновение
может возникнуть проблема с настройками сервера, заданными с помощью компиляции
чтобы протестировать вход в консоль с одним и тем же пользователем и попробовать команду данных загрузки
если вы получите ту же ошибку, попробуйте закрыть консоль и запустите
mysql -u USER -p --local-infile=1 DATABASE
попробуйте снова запустить команду загрузки данных
если он работает, вам понадобится перезапустить 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
Ответ 2
Я искал решение около часа, я понял, что мне нужно подключиться к базе данных, как это
$ DBH = mysql_connect ($ сервер, $DbUser, $DBPass, ложная, 128);
Передача 128 в параметр flags - это ключ.
Подробнее о флажках см. http://www.php.net/manual/en/mysql.constants.php#mysql.client-flags.
Ответ 3
взгляните на этот список разрешений, вы можете добавить их отдельно, IE. вы можете вставлять, но не обновлять, или вы можете удалить, но не выбрать и т.д.
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 [email protected] |
+-------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'jbolivar'@'localhost' |
+-------------------------------------------------------+
1 row in set (0.00 sec)