无法在 mysql Ver 14.14 Distrib 5.5.25a 中禁用 LOCAL INFILE(出于安全原因),适用于 debian-linux-gnu(i686),在 ubuntu 12.04 上使用 readline 6.2;这是我的 /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 内容。所以它不起作用。
答案1
从MySQL 文档之 load_file参考,可以看出load_file是MySQL函数,它以字符串形式返回文件内容。它仅此而已。它与local_infile无关。
出于安全目的,来自相同的文档:
如果 secure_file_priv 系统变量设置为非空目录名,则要加载的文件必须位于该目录中。
因此,如果您设置了系统变量“secure_file_priv”,则文件必须存在于该特定目录中。此外,用户需要文件级权限才能执行此语句。如果您希望数据库安全,则不要向访问数据库的用户授予文件级权限。