如何解决MySQL导出数据时的权限设置问题?

如何解决MySQL导出数据时的权限设置问题?

昨天在从MySQL中导出备份数据的时候遇到下面这样的错误:

1
2
3
4
5
6
7
8
# 备份数据库db_school.tb_student
select * from db_school.tb_student
into outfile '/Users/mr.cheng/Desktop/backupfile.txt'
fields terminated by ','
optionally enclosed by '"'
lines terminated by '?';
-- 结果:
[2018-09-05 10:40:44] [HY000][1290] The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

搜索了很多解决办法,最后大概明白了是没有权限导入导出数据。
,昨天搞到了一点终于弄好了。

首先可以使用下面的语句显示secure-file-priv:

1
2
3
4
show variables like '%secure%';
-- 结果
require_secure_transport OFF
secure_file_priv NULL

NULL就表示没有任何导入导出权限,所以需要修改这个参数:
/private/ect/里新建一个my.cnf文件,里面输入下面的内容

1
2
[mysqld]
secure_file_priv = /Users/mr.cheng/sql

/Users/mr.cheng/sql是要授予导入导入导出权限的文件夹。似乎必须是用户下面的顶级文件夹,要不然会出错。

完成了这一步之后,重启MySQL(从系统偏好那里重启)。然后再次运行下面的导出语句:

1
2
3
4
5
select * from db_school.tb_student
into outfile '/Users/mr.cheng/sql/backupfile.txt'
fields terminated by ','
optionally enclosed by '"'
lines terminated by '?';

结果仍然会出错。这个时候的提示是Permission denied。这是因为MySQL对刚刚那个文件夹没有权限,所以下面一个让我非常头大的事情。。。我得把我在那个文件夹的权限转让给MySQL,在终端输入下面的语句就能完成:

1
sudo chown mysql:mysql ~/sql/

转让权限之后。。。你就失去了对这个文件夹的直接控制权,收回权限可以用下面的语句:

1
sudo chown mr.cheng ~/sql/

然后就能把备份文件导出到这个文件夹了:

1
2
3
4
5
select * from db_school.tb_student
into outfile '/Users/mr.cheng/sql/backupfile.txt'
fields terminated by ','
optionally enclosed by '"'
lines terminated by '?';

# MySQL

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×