如何在 MySql 5.5 Ubuntu 12.04 中禁用 LOCAL INFILE

如何在 MySql 5.5 Ubuntu 12.04 中禁用 LOCAL INFILE

无法在 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”,则文件必须存在于该特定目录中。此外,用户需要文件级权限才能执行此语句。如果您希望数据库安全,则不要向访问数据库的用户授予文件级权限。

更远本地文件是为了加载数据语句,将数据加载到表中,从而影响表。它与 load_file() 函数无关。

相关内容