최신 게시글(DB)
2017.04.26 / 22:05

[mysql] SELECT .. INTO OUTFILE

tomcater
추천 수 189

SELECT .. INTO OUTFILE을 사용하면 파일로 덤프할 수 있다. 



select id, name from members where id >= 1 INTO OUTFILE '/home/www/file.txt'




하지만, mysql master를 실행할 때, --secure-file-priv=path 옵션을 주어 실행했다면, slave에서도 SELECT .. INTO OUTFILE을 사용할 수 없다. 


즉, 아래와 같은 에러가 발생한다.



ERROR 1290 (HY000): The MariaDB server is running with the --secure-file-priv option so it cannot execute this statement



--secure-file-priv 변수를 확인해본다.


mysql> show variables like 'secure%';

+------------------+---------------+

| Variable_name    | Value         |

+------------------+---------------+

| secure_auth      | OFF           |

| secure_file_priv | /xxx/yyy |

+------------------+---------------+



mysql 슬레이브로 접근하여 secure_file_priv  옵션의 값에 맞게 SELECT .. INTO OUTFILE을 사용한다 하더라도, mysql client 의 로컬 디렉토리에는 전혀 저장할 수 없다.



select id, name from members where id >= 1 INTO OUTFILE '/xxx/yyy/file.txt'


실행은 되더라도 mysql master 서버에 위치한 /xxx/yyy에만 저장되니 원격에서 연결된 mysql client의 로컬 디렉토리에는 mysql 데이터를 저장할 수 없다. 






참고로,


secure_file_priv  옵션은 SELECT .. INTO .. 와 LOAD 문도 영향을 준다. 



출처: http://knight76.tistory.com/entry/mysql-SELECT-INTO-OUTFILE [김용환 블로그(2004-2017)]