linux MySQL8.0 关于secure file priv报错

Mysql版本:Server version: 8.0.11 MySQL Community Server - GPL

 

执行mysqldump语句报错:

执行语句:mysqldump -uroot -p sakila emp1 -T ./bak

sakila 库名 ;

emp1:表名 ;

-T:将表分成两个文件存储,一个文件为纯数据、一个为建表SQL语句。

./bak :存储在linux当前目录bak文件夹下。

报错语句:mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement when executing 'SELECT INTO OUTFILE'

 

解决:

1:secure-file-priv特性
secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。

  • ure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

  • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

  • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

2: 查看secure_file_priv值:

mysql> show variables like '%secure%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | OFF   |
| secure_file_priv         | NULL  |
+--------------------------+-------+
2 rows in set (0.01 sec)

3:修改my.cnf 在[mysqld]内加入secure_file_priv =
MYSQL新特性secure_file_priv对读写文件的影响
然后重启mysql,再查询secure_file_priv

 

4:my.cnf添加secure_file_priv=/mysql/bak后还是报错 

[root@localhost mysql]# mysqldump -uroot -p sakila emp1 -T /mysql/bak/
Enter password: 
mysqldump: Got error: 1: Can't create/write to file '/mysql/bak/emp1.txt' (OS errno 13 - Permission denied) when executing 'SELECT INTO OUTFILE'

 

解决办法:[root@localhost mysql]# chmod 757 bak

注意:网上对于此问题的解决办法有:关闭selinux (setenforce 0) 、setsebool -P mysql_connect_trans=off 等。这些我都试了,但是发现开启selinux后,还是bak文件夹的权限最重要。开启了o+w权限就OK了。

[root@localhost mysql]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.8 (Santiago)

我的系统版本没有mysql_connect_trans

 

5:语句执行成功,文件下面生成了.txt和.sql语句

[root@localhost bak]# ll
total 8
-rw-r--r--. 1 root  root  1753 Aug 10 10:11 emp1.sql
-rw-rw-rw-. 1 mysql mysql   43 Aug 10 10:11 emp1.txt

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值