赞
踩
前言:小白一枚,记录踩过的坑,有错误的地方麻烦路过的大牛纠正一下,谢谢
尝试将数据库里的数据通过命令select into outfile和命令load data infile
导出和导入到目录/home/mysql/下报错error1
软件版本:centos 7 和mysql 5.7
目标目录/home/mysql/的权限不够;
selinux的影响;
将参数secure_file_priv设置为’’(空)
vim进入mysql的配置文件修改参数secure_file_priv
按O插入 esc推出编辑 :wq!保存并退出
[root@localhost ***]# vim /etc/my.cnf
修改如:secure-file-priv=‘ ‘
查看修改后结果
mysql> show global variables like ‘%secure%’;
| secure_file_priv | |
关闭selinux
修改目录/home/mysql/权限为mysql:mysql
通过vim命令进入selinux的配置文件
按O插入 esc推出编辑 :wq!保存并退出
[root@localhost ***]# vim /etc/selinux/config
找到SELINUX=enforcing:将enforcing 改为 disabled
重启系统才能生效,重启时间会比较久
重启后查看selinux状态
[root@localhost ***]# sestatus;
SELinux status: disabled(现在是关闭状态)
[root@localhost ***]# chown -R mysql:mysql /home/mysql/
[root@localhost ***]# chmod -R 711 /home/mysql/
(备注:711是参考目录/var/lib/mysql/的权限
[root@localhost ***]# ls -dl /var/lib/mysql/)
查看修改结果
[root@localhost ***]# ls -dl /home/mysql/
drwx–x--x. 2 mysql mysql (操作时间)home/mysql/
mysql> select * into outfile ‘/home/mysql/c.txt’ from p;
Query OK, 6 rows affected (0.14 sec)
通过vim命令进入selinux的配置文件
按O插入 esc推出编辑 :wq!保存并退出
[root@localhost ***]# vim /etc/selinux/config
找到SELINUX= disabled:将 disabled改为enforcing
重启系统才能生效,重启时间会比较久
重启后查看selinux状态
[root@localhost ***]# sestatus;
SELinux status: enforcing (现在是开启状态)
要让mysql能够导入/home/mysql/目录下的文件,
首先就要让mysql和/home/mysql/各自对应的安全上下文一致,
需要先确认他们各自的安全上下文
使用的命令
ls -Z 文件 查看文件的安全上下文
ls -Zd 目录 查看目录的安全上下文
ps auxZ | grep 进程 查看进程的安全上下文
/home/mysql/的安全上下文
[root@localhost ***]# ls -Zd /home/mysql/
system_u:object_r:user_home_dir_t:s0 /home/mysql/
这一行对应为:(身份字段:角色:类型:灵敏度)
拥有者系统,类型文件,安全上下文user_home_dir_t,灵敏度s0
mysql的安全上下文
[root@localhost ***]# ps auxZ |grep mysqld
system_u:system_r:mysqld_t:s0 mysql
两者的安全上下文不一致
mysql> select * into outfile ‘/home/mysql/c.txt’ from p;
ERROR 1 (HY000): Can’t create/write to file ‘/home/mysql/c.txt’ (Errcode: 13 - Permission denied)
参考mysql的数据目录修改安全上下文
[root@localhost ***]# ls -Zd /var/lib/mysql
system_u:object_r:mysqld_db_t:s0 /var/lib/mysql
使用chcon 命令:
[root@localhost ***]# chcon -Rt mysqld_db_t /home/mysql/
[root@localhost ***]# ls -Zd /home/mysql/
system_u:object_r:mysqld_db_t:s0 /home/mysql/
mysql> select * into outfile ‘/home/mysql/c.txt’ from p;
Query OK, 6 rows affected (0.24 sec)
导出成功
所以要操作对应的文件,要满足selinux和对用的权限
先记录下吧
非常感谢作者学到了很多,少踩很多坑)
SELinux安全上下文查看方法(超详细)
[http://c.biancheng.net/view/1149.html]
整理下命令
1 查看文件的安全上下文 ls -Z 文件
2 查看目录的安全上下文 ls -Zd 目录
3 查看进程的安全上下文 ps auxZ | grep 进程
4 编辑selinux的配置文件 vim /etc/selinux/config
5 查询SELinux的运行模式 getenforce
6 查看selinux的状态sestatus
stenforce 只能进行两种模式的切换:
[root@localhost ~]# setenforce 选项
选项:
0: 切换成 permissive(宽容模式);
1: 切换成 enforcing(强制模式);
7 安全目录解读
system_u:object_r:httpd_sys_content_t:s0:[类别]
#身份字段:角色:类型:灵敏度:[类别]
8 seinfo 查询selinux信息,命令格式如下:
[root@localhost ~]# seinfo [选项]
选项:
-u: 列出SELinux中所有的身份(user);
-r: 列出SELinux中所有的角色(role);
-t: 列出SELinux中所有的类型(type);
-b: 列出所有的布尔值(也就是策略中的具体规则名称);
-x: 显示更多的信息;
9 设置文件或目录的权限 chcon 命令,格式如下:
[root@localhost ~]# chcon [选项] 文件或目录
选项:
-R: 递归,当前目录和目录下的所有子文件同时设置;
-t: 修改安全上下文的类型字段,最常用;
-u: 修改安全上下文的身份字段;
-r: 修改安全上下文的角色字段;
10 修改目录及子文件所有者
chown -R mysql:mysql /home/mysql/
11 查看目录的权限 ls -dl /home/mysql/
12 把文件的安全上下文恢复成默认的安全上下文,restorecon 命令格式如下:
[root@localhost ~] # restorecon [选项】 文件或目录
选项:
-R:递归.当前目录和目录下所有的子文件同时恢复;
-V:把恢复过程显示到屏幕上;
13 记录下
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t “/www(/.*)?”
#这条命令会给/www/目录及目录下的所有内容设定默认安全上下文类型是httpd_sys_content_t
[root@localhost ~# semanage fcontext -l | grep “/www”
查看目录/www的默认安全上下文
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。