Как решить проблему “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 » при попытке загрузить или сохранить данные.