오늘도 한 뼘 더
[MySQL] MySQL Dump 에러 ERROR 1227 (42000) 본문
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
반응형
'Study > MySQL' 카테고리의 다른 글
[MySQL] MySQL Workbench에서 SSH로 DB 접근 (0) | 2022.10.01 |
---|---|
[MySQL] 쿼리 플랜(Query Plan) 보기 (0) | 2022.09.15 |
[MySQL] ERROR 2006 (HY000): MySQL server has gone away (0) | 2022.06.03 |
[MySQL] 사용자 생성/삭제, 권한 추가/삭제/변경 (0) | 2022.05.26 |
[MySQL] Error Code 1175: Safe Update 해결 방법 (0) | 2022.04.01 |
Comments