记录mysql文件读取时secure_file_priv =问题
转载:https://www.cnblogs.com/c1e4r/articles/8618692.html
前提
进行mysql文件读取时需满足两个条件
1.在拥有file权限的前提下
2.secure_file_priv不为NULL
情景
进行mysql文件读取时,报错
主要原因:未开启权限且未全局设置secure_file_priv =
解决办法:
将mysql的配置文件my.ini [mysqld] 中secure_file_priv=“xxxx” 注释 或者 secure_file_priv =
在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。可以通过以下方式修改
windows下:
修改mysql.ini 文件,在[mysqld] 下添加条目: secure_file_priv =
保存,重启mysql。
Linux下:
在/etc/my.cnf的[mysqld]下面添加local-infile=0选项。
此时重启mysql后,查看secure_file_priv全局变量
mysql> show global variables like "secure_file_priv"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | | +------------------+-------+ 1 row in set (0.00 sec)
进行文件读取
mysql> select load_file('d:\\www.txt'); +--------------------------+ | load_file('d:\\www.txt') | +--------------------------+ | x | +--------------------------+ 1 row in set (0.00 sec)
进行webshell写入
mysql> select '<?php phpinfo() ?>' into outfile "C:\\b.php"; Query OK, 1 row affected (0.00 sec) mysql> select load_file('c:\\b.php'); +------------------------+ | load_file('c:\\b.php') | +------------------------+ | <?php phpinfo() ?> | +------------------------+ 1 row in set (0.00 sec)