When MySQL exports a file, the following is displayed:
mysql> select * from users into outfile '/root/users.txt'; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
The reason is not clear. It is said on the Internet that operations like into are only allowed to users with file permission. In short, it is about permissions. Here we need to use a table that stores the system parameters of MySQL:
mysql> show variables like 'secure_file_priv'; +------------------+-----------------------+ | Variable_name | Value | +------------------+-----------------------+ | secure_file_priv | /var/lib/mysql-files/ | +------------------+-----------------------+ 1 row in set (0.01 sec)
Here, my secure_file_priv field has a value and is fixed in /var/lib/mysql-files/, which means that Mysql export data can only be exported to this directory, and export is not authorized in other places:
mysql> select * from users into outfile '/var/lib/mysql-files/users.txt'; Query OK, 6 rows affected (0.00 sec)
The value of the secure_file_priv field here can be set (I don’t know how to change it, Baidu myself)
- If it is empty, the variable is invalid and can be exported without restriction. This is not a safe setting
- If set to the name of a directory, the server will restrict import and export operations to only process files in that directory. The directory must exist; the server will not create it.
- If set to NULL, the server will disable import and export operations.
Modify system variables
mysql> set global secure_file_priv = ''; ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable //
Directly modify the display read only, so you can only start from the configuration file
Open another window and directly modify the configuration file my.cnf. I have omitted a lot of comments here. When making changes, please note that you cannot directly add secure_file_priv=” to the last line. This is incorrect, because the last line is in the [mysql] column. Variables need to be added under [mysqld]
[root@VM-0-7-centos mysql-files]# vim /etc/my.cnf …… [mysqld] …… datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock …… secure_file_priv = '' //correct position added here, [ mysqld ] in which [mysqld_safe] …… [mysql] ……
Restart MySQL service after adding
[root@VM-0-7-centos mysql-files]# service mysqld restart Redirecting to /bin/systemctl restart mysqld.service
After restarting, log in to MySQL again and find that it has been changed:
mysql> show variables like 'secure_file_priv'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | | +------------------+-------+ 1 row in set (0.00 sec)
Similar Posts:
- How to Solve MySQL Secure file priv error
- When MySQL uses select statement to export table data, error 1290 is reported
- [Solved] MYSQL Error [Error Code] 1290 – The MySQL server is running with the –secure-file-priv option
- MySQL import file prompt — secure file priv option problem
- MySQL reports an error using load data local infile
- [Solved] MYSQL ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot e…
- [Solved] MySQL Import csv File[Error Code] 1290 – The MySQL server is running with the –secure-file-priv option
- [Solved] Error report of inconsistent password format between low version and high version of MySQL
- Loading local data is disabled; this must be enabled on both the client and server sides
- [Solved] Warning: World-writable config file ‘/etc/my.cnf’ is ignored