在tmp目录下创建了1.txt,内容为hello world,但是在启动mysql后,使用了load_file('xxx');查询结果为空
但是我非常确定内容并不是空,所以参考了很多csdn上的文章,查询了secure_file_priv的具体值,
查询命令为
show global variables like '%secure%';
查询结果为:
于是我将要load的文件放在了上图的/var/lib/mysql-file中,再使用load_file指令,结果依然为NULL,参考文章得知:
secure_file_priv为NULL 表示不允许导⼊导出
secure_file_priv指定⽂件夹时,表示mysql的导⼊导出只能发⽣在指定的⽂件夹
secure_file_priv没有设置时,则表示没有任何限制(secure_file_priv = "")
于是,我在/etc/mysql目录下找到配置文件准备修改secure_file_priv
在my.conf中的[mysqld]下加上了[mysqld] secure_file_priv = ""(因为我的配置文件中没有[mysqld],所以[mysqld]也是我加上去的)
另外我还有配置文件mysql.conf,和my.conf位于同一目录下,也加上了同样的内容,
完成所有操作后,使用以下命令关闭ubuntu内apparmor对mysql的protection,便能完成正常load_file
apparmor module is loaded.
6 profiles are loaded.
6 profiles are in enforce mode.
/sbin/dhclient
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/connman/scripts/dhclient-script
/usr/sbin/mysqld
/usr/sbin/ntpd
/usr/sbin/tcpdump
0 profiles are in complain mode.
2 processes have profiles defined.
2 processes are in enforce mode.
/usr/sbin/mysqld (27816)
/usr/sbin/ntpd (31952)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
完成后,重启mysql
service mysql restart
再次使用load_file
查询成功
参考文章: