Linux/Red Hat 계열
[CentOS] MariaDB `Can't create/write to file '/...' (Errcode: 13)`
devvace
2020. 6. 2. 11:37
버전 참고
- OS: CentOS 7.4
- DB: MariaDB 5.5
문제 상황
INTO OUTFILE 명령어를 사용해서 .csv 파일로 데이터 출력을 하다가 이 에러를 만났다.
예전에 같은 문제로 해결을 했던 적이 있어서 관련 자료를 찾아보니 다음(해결 방법 1)과 같이 해결했었다.
해결 방법 1
- 참고사이트: https://serverfault.com/questions/84890/cant-create-write-to-file-tmp-sql-xxxx-myi-errcode-13
새로 테스트 디렉토리를 생성한 후 디렉토리 권한에 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 변경을 통해 권한 해제를 해야 한다.