Как я должен решать --secure-file-priv в MySQL?



Я изучаю MySQL и попытался использовать LOAD DATA предложения. Когда я использовал его, как показано ниже:



LOAD DATA INFILE "text.txt" INTO table mytable;


Я получил следующую ошибку:




сервер MySQL работает с параметром --secure-file-priv, поэтому он не может выполнить этот оператор




Как я могу решить эту ошибку?



Я проверил другой вопрос на том же сообщении об ошибке, но до сих пор не могу найти решение.



Я использую MySQL 5.6

864   9  

9 ответов:

он работает по назначению. Ваш сервер MySQL был запущен с --secure-file-priv опция, которая в основном ограничивает, из каких каталогов вы можете загружать файлы с помощью LOAD DATA INFILE.

вы можете использовать SHOW VARIABLES LIKE "secure_file_priv"; чтобы увидеть каталог, который был настроен.

у вас есть два варианта:

  1. переместить файл в каталог, указанный secure-file-priv.
  2. отключить secure-file-priv. Это должно быть удалено из запуска и не может быть изменено динамически. Для этого проверьте параметры запуска MySQL (в зависимости от платформы) и my.Ини.

у меня была та же проблема. Я, наконец, решил с помощью в команде

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

вы можете найти дополнительную информацию здесь http://dev.mysql.com/doc/refman/5.7/en/load-data.html

Если указано LOCAL, то файл считывается клиентской программой на клиент хоста и отправляется на сервер. Файл может быть предоставлен как полный имя пути, чтобы указать его точное местоположение. Если задан относительный путь имя интерпретируется относительно каталога, в котором запущена клиентская программа.

на Ubuntu 14 и Mysql 5.5.53 этот параметр, кажется, включен по умолчанию. Чтобы отключить его, вам нужно добавить secure-file-priv = "" в свой личный.файл cnf в группе конфигурации mysqld. например:-

[mysqld]
secure-file-priv = ""

Я работаю над MySQL5.7. 11 на Debian, команда, которая работала для меня, чтобы увидеть каталог:

mysql > SELECT @@global.secure_file_priv;

вот что работает для меня в Windows 7 отключить secure-file-priv (Вариант № 2 от ответ ВХУ):

  1. остановите службу сервера MySQL, перейдя в services.msc.
  2. на C:\ProgramData\MySQL\MySQL Server 5.6 (ProgramData была скрытая папка в моем случае).
  3. открыть my.ini файл в блокноте.
  4. Поиск 'secure-file-priv'.
  5. прокомментируйте строку, добавив ' # ' в начале строки.
  6. сохранить файл.
  7. запустите службу сервера MySQL, перейдя в services.msc.

для сервера MySQL 5.7.16 и выше, пожалуйста, обратитесь к комментарию dbc ниже.

Если файл является локальным для вашего компьютера используйте LOCAL в команде

LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;

Я имел такую же проблему с помощью файла-прив'. Комментируя в то .ini-файл не работал и не перемещал файл в каталог, указанный "secure-file-priv".

наконец, как предложил dbc, создание "secure-file-priv", равного пустой строке, работало. Так что если кто-то застрял после попытки ответов выше, надеюсь это поможет.

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

что сработало для меня:

ошибка, которую я получал

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Я был в состоянии исправить это путем открытия /usr/местные/MySQL в/поддержки-Files/MySQL для.сервер и изменение следующей строки:

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

до

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

У меня была эта проблема на windows 10. "--secure-file-priv in MySQL " для решения этой задачи я сделал следующее.

  1. в Windows search (внизу слева) я набрал "powershell".
  2. щелкнул правой кнопкой мыши на powershell и побежал как администратор.
  3. переход к файлу bin сервера. (C:\Program Files\MySQL\MySQL Server 5.6\bin);
  4. наберется ./ mysqld
  5. нажмите "enter"

сервер запустился, как и ожидалось.

Comments

    Ничего не найдено.