버전 참고

  • OS: CentOS 7.4
  • DB: MariaDB 5.5

문제 상황

INTO OUTFILE 명령어를 사용해서 .csv 파일로 데이터 출력을 하다가 이 에러를 만났다.
예전에 같은 문제로 해결을 했던 적이 있어서 관련 자료를 찾아보니 다음(해결 방법 1)과 같이 해결했었다.

해결 방법 1

새로 테스트 디렉토리를 생성한 후 디렉토리 권한에 Public을 주는 것이다.

[root@localhost /]# mkdir /csv 
[root@localhost /]# chmod 777 /csv

해결 방법 2

이 글을 포스팅한 이유이기도 한데, 해결 방법 1로 해결이 되지 않아서 다른 방법을 찾아봤다.
해결하는데 1시간 좀 넘게 걸린듯하다.(검색한 대부분 해결방법이 디렉토리에 Public 권한 주는 방법이었음)
Ubuntu에서는 또 다른 설정을 건드리는 방법이 있었는데, 일단 나는 CentOS이니까 패스.

예전에 OS 권한 관련해서 SELinux 설정을 건드리는 기억이 떠올라서 관련 검색을 했다.
해결 방법을 찾아서 해결할 수 있었다.

1. 현재 상태

[root@localhost /]# sestatus
    ...
    Current mode:                   enforcing
    ...

2. Permissive mode 전환

[root@localhost /]# setenforce 0
[root@localhost /]# sestatus
    ...
    Current mode:                   permissive
    ...

3. OUTFILE 실행

.csv 파일로 출력하는 명령문 실행

4. Enforce mode 전환

[root@localhost /]# setenforce 1
[root@localhost /]# sestatus
    ...
    Current mode:                   enforcing
    ...

SELinux 설정 자체를 해제하는 방법도 있지만, 참고 사이트에서도 언급했듯이 보안상 권장하지 않는 방법이다. 그래서 귀찮더라도 Mode 변경을 통해 권한 해제를 해야 한다.