오늘도 한 뼘 더

[MySQL] MySQL Dump 에러 ERROR 1227 (42000) 본문

Study/MySQL

[MySQL] MySQL Dump 에러 ERROR 1227 (42000)

나른한댕댕이🐶 2022. 7. 15. 15:30
728x90
반응형

  # 배경  

 $ mysql -h {HOST_NAME} -u {USER} -p {DATABASE_NAME} < dump.sql

mysql dump를 하는데 다음과 같은 에러가 반환되었다. 

 ERROR 1227 (42000) at line 18: Access denied; 
 you need (at least one of) the SUPER privilege(s) for this operation

 

  # 문제 원인  

이 문제는 RDS가 제공하는 MySQL 서버가 사용자가 아닌 다른 DEFINER가 지정된 sql파일은 허용하지 않아 생기는 것이라고 한다.

즉, data export를 할 때와 data import 할 때의 사용자가 달라서 생긴 문제였다.

 

  # 해결 방법  

1. 명령어

 $ sed -i 's/DEFINER=[^*]*\*/\*/g' dump.sql

해당 명령어를 실행한 뒤에 sql 파일을 다시 로드해본다. 하지만, 제대로 동작을 안 하는 경우가 있다. 

필자의 경우 명령어 실행에 에러가 반환되지는 않았지만 import할 때 에러는 변하지 않았다. 이런 경우 다음 방법을 사용하면 된다.

 

2. dump를 할 때 조건 걸기

  • --set-gtid-purged=OFF 옵션을 추가한다. 
  $mysqldump -h ${HOST_NAME} \
     -u {USER} \
     -p \
     --set-gtid-purged=OFF
     {DATABASE_NAME} > dump.sql

2번째 방법으로 진행을 하니 데이터가 제대로 import 되는 것을 확인했다. 

728x90
반응형
Comments