Назад | Перейти на главную страницу

Как отключить LOCAL INFILE в MySql 5.5 Ubuntu 12.04

Невозможно отключить LOCAL INFILE (по соображениям безопасности) в mysql Ver 14.14 Distrib 5.5.25a, ​​для debian-linux-gnu (i686) с использованием readline 6.2 в ubuntu 12.04; Вот мой /etc/mysql/my.cnf

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
loose-local-infile=0
local-infile=0

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
local-infile=0
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

я делаю

sudo /etc/init.d/mysql restart

mysql -u root -p

mysql> SELECT load_file("/etc/passwd");

И он показывает мне мой / etc / passwd контент. Так что это не сработало.

Из Документы MySQL для load_file ссылки, можно увидеть, что load_file - это функция MySQL, которая возвращает содержимое файла в виде строки. Больше он ничего не делает. Это не имеет ничего общего с local_infile.

В целях безопасности из тех же документов:

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

Итак, если вы установите системную переменную secure_file_priv, тогда файл должен находиться в этом конкретном каталоге. Более того, для выполнения этого оператора пользователю требуются привилегии уровня файла. Просто не давайте пользователям, которые обращаются к базе данных, права на уровне файлов, если вы хотите, чтобы она была защищена.

Дальше local-infile для ЗАГРУЗИТЬ ДАННЫЕ операторы, которые загружают данные в таблицу, тем самым влияя на таблицы. Это не имеет ничего общего с функцией load_file ().