Search code examples
phpmysqlmysql-error-1064

Mysql making --secure-file-priv option to NULL


I am running MySQL in Ubuntu. I getting this error while running specific set of queries.

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

When I did SELECT @@secure_file_priv; in my mysql server I got /var/lib/mysql-files/. I think I need to make this to NULL.

This is the query I am running:

LOAD DATA INFILE :file INTO TABLE test_files
COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
LINES TERMINATED BY '\n';

Now the question is how to make this NULL?


Solution

  • Try:

    mysql> SELECT VERSION();
    +-----------+
    | VERSION() |
    +-----------+
    | 5.7.12-0  |
    +-----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT @@GLOBAL.secure_file_priv;
    +---------------------------+
    | @@GLOBAL.secure_file_priv |
    +---------------------------+
    | /var/lib/mysql-files/     |
    +---------------------------+
    1 row in set (0.00 sec)
    

    Change file: /etc/mysql/my.cnf

    [mysqld]
    .
    .
    .
    secure_file_priv=NULL
    .
    .
    .
    

    Restart MySQL.

    mysql> SELECT @@GLOBAL.secure_file_priv;
    +---------------------------+
    | @@GLOBAL.secure_file_priv |
    +---------------------------+
    | NULL                      |
    +---------------------------+
    1 row in set (0.00 sec)
    

    UPDATE

    mysql> SELECT @@GLOBAL.secure_file_priv;
    +---------------------------+
    | @@GLOBAL.secure_file_priv |
    +---------------------------+
    | /var/lib/mysql-files/     |
    +---------------------------+
    1 row in set (0.00 sec)
    

    File: /var/lib/mysql-files/myfile.csv

    1,"Row 1"
    2,"Row 2"
    3,"Row 3"
    
    mysql> DROP TABLE IF EXISTS `test_files`;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> CREATE TABLE IF NOT EXISTS `test_files` (
        ->   `col0` INT,
        ->   `col1` VARCHAR(20)
        -> );
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
        -> INTO TABLE `test_files`
        -> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
        -> LINES TERMINATED BY '\n';
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
    mysql> SELECT
    ->   `col0`,
    ->   `col1`
    -> FROM
    ->   `test_files`;
    +------+-------+
    | col0 | col1  |
    +------+-------+
    |    1 | Row 1 |
    |    2 | Row 2 |
    |    3 | Row 3 |
    +------+-------+
    3 rows in set (0.00 sec)