Как решить проблему “MySQL server is running with the –secure-file-priv” Error

Как решить проблему “MySQL server is running with the –secure-file-priv” Error

 

При запуске mysqldсервера вы можете указать параметры программы в файле параметров или в командной строке. Эти параметры предназначены для разблокировки других функций MySQL, изменения переменных или наложения ограничений.

Вот как параметры читаются на сервере MySQL:

  • mysqld считывает параметры из [mysqld] и [server] групп
  • mysqld_safe считывает параметры из [mysqld][server], [mysqld_safe]и [safe_mysqld] групп
  • mysql.server cчитывает параметры из [mysqld] и [mysql.server] групп.

Вы можете увидеть краткую сводку опций, поддерживаемых MySQL, используя:

$ mysqld --help

Чтобы увидеть полный список, используйте команду:

$ mysqld --verbose --help

Одна из тех системных переменных, которые можно установить при запуске сервера, это mysqld_secure-file-priv

Что такое переменная mysqld_secure-file-priv?

Переменная secure_file_privиспользуется для ограничения эффекта операций импорта и экспорта данных. Пример пораженных операций, выполняемый  LOAD DATA и SELECT ... INTO OUTFILE отчетность и функция LOAD_FILE(). Эти операции разрешены только пользователям, имеющим такое  FILE право.

Чтобы увидеть текущую настройку во время выполнения, используйте SHOW VARIABLESинструкцию.

Войдите в оболочку MySQL как пользователь root

$ mysql -u root -p
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set
Time: 0.023s

Вы можете видеть, что набор каталогов /var/lib/mysql-files/

Изменение каталога переменных secure-file-priv

Это значение можно изменить в файле опций MySQL в разделе [mysqld] .

sudo vim /etc/my.cnf

Установите переменную в [mysqld] разделе

[mysqld]
secure-file-priv=/mysqlfiles

Затем создайте настроенный каталог

sudo mkdir /mysqlfiles
sudo chown -R mysql:mysql  /mysqlfiles/

Перезапустите службу MySQL, чтобы изменения вступили в силу.

sudo systemctl restart mysqld

Войдите снова, чтобы подтвердить новую настройку

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+--------------+
| Variable_name    | Value        |
+------------------+--------------+
| secure_file_priv | /mysqlfiles/ |
+------------------+--------------+
1 row in set (0.00 sec)

Давайте протестируем, чтобы подтвердить, что мы можем экспортировать по указанному пути.

mysql> SELECT * FROM information_schema.processlist into outfile '/tmp/mysql_processes.txt';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Попробуем еще раз написать правильный путь.

mysql> SELECT * FROM information_schema.processlist into outfile '/mysqlfiles/mysql_processes.txt';
Query OK, 1 row affected (0.00 sec)

Переменная Diable secure-file-priv

Чтобы отключить его, установите для переменной значение NULL.

[mysqld]
secure-file-priv = ""

Перезапуск службы mysqld

sudo systemctl restart mysqld

Подтвердить после перезапуска службы

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0.00 sec)

Попробуйте сохранить содержимое QUERY по другому пути

mysql> SELECT * FROM information_schema.processlist into outfile '/tmp/mysql_processes.txt';
Query OK, 1 row affected (0.00 sec)

Это было успешно. Вы научились настраивать secure-file-privпеременную в соответствии со своим вариантом использования. До следующего раза, благодарим за использование нашего руководства для решения проблемы « Сервер MySQL работает с ошибкой –secure-file-priv » при попытке загрузить или сохранить данные.

Прокрутить вверх