반응형
마리아 DB/MySQL 덤프를 생성하면 사용자 객체에 DEFINER가 함께 붙어서 덤프 파일이 생성됩니다.
DEFINER이 없다면 접속한 사용자의 객체로 생성이 되지만,
덤프를 통한 다른 계정으로 생성이 필요한 경우에는 오라클처럼 remap과 같은 새로 매핑하는 것이 없다 보니 데이터 덤프 파일을 입력할 때 많은 오류가 발생합니다.
파이프라인을 통한 제거
덤프 파일을 만들 때 파이프라인을 이용하여 DEFINER문장을 제거하여 덤프 파일을 생성,
계정에 신경 쓰지 않고 범용적으로 사용이 가능합니다.
./mysqldump \
-u user \
-ppassword \
--single-transaction \
--routines \
--triggers \
--databases database \
--compress \
| sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > dump.sql
- single-transaction: 단일 트랜잭션으로 덤프 생성, 데이터 일괄성
- routines: 사용자 객체(프로시저, 함수) 덤프
- triggers: 트리거 포함
- databases: 덤프 대상 database
- compress: 압축 여부
계정을 이미 알고 있는 상태라면 다음의 방식으로도 가능합니다.
- DEFINER 제거
DEFINER을 제거할 경우 접속한 계정으로 객체가 생성됩니다.
$ sed -i -e 's/DEFINER=`root`@`localhost`//g' dump.sql
- DEFINER 변경
다른 사용자 계정으로 만들기 위해 객체 명 변경
$ sed -i -e 's/DEFINER=`root`@`localhost`/DEFINER=`user`@`%`/g' dump.sql
참고
- https://aws.amazon.com/ko/premiumsupport/knowledge-center/definer-error-mysqldump/
- https://stackoverflow.com/questions/9446783/remove-definer-clause-from-mysql-dumps
#mysql #mariadb #datadump #dump #definer
반응형
'Dev > DataBase' 카테고리의 다른 글
MySQL ERROR 1231 "NO_AUTO_CREATE_USER" (0) | 2022.04.06 |
---|---|
MySQL/MariaDB SQL_MODE 설정 (0) | 2022.04.06 |
오라클 사용자 생성, 데이터 덤프 (0) | 2022.02.21 |
[MariaDB] ERROR 1118 (42000) Row Size 오류 (0) | 2021.12.30 |
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. (0) | 2021.06.07 |