[mysql] 전체 스키마를 덤프하기 위해 mysqldump에 필요한 최소 GRANT? (트리거가 없습니다 !!)

다음 perms를 사용하여 dump 라는 MySQL 사용자가 있습니다 .

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'
GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%'

덤프 사용자를 사용하여 모든 데이터 (트리거 및 프로 시저 포함)를 덤프하고 싶습니다 . 다음과 같은 방법으로 mysqldump를 호출합니다.

mysqldump -u dump -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

트리거를 제외하고 덤프 된 파일로 모든 것이 정상 이며 누락되었습니다. .

루트 MySQL 사용자로 mysqldump를 시도하면 트리거가 올바르게 덤프됩니다 .

mysqldump -u root -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

그래서, 그것은 파마 문제라고 생각합니다 … 덤프 MySQL 사용자가 전체 덤프를 올바르게 수행하는 데 필요한 추가 권한 은 무엇 입니까?



답변

전체 덤프로 VIEWs 및 s를 의미한다고 가정하면 EVENT다음이 필요합니다.

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...;
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `myschema`.* TO 'dump'@'%';

VIEW함수를 실행하는 s가 있으면 불행히도 다음이 필요합니다.EXECUTE .

내 문제는 다음과 같습니다. SELECT데이터가없는 덤프 만 만들고 싶은데 왜 필요 합니까?


답변

필요한 여분의 GRANT를 찾았습니다 !!

  GRANT TRIGGER ON `myschema`.* TO 'dump'@'%'

다음은 공식 문서에 대한 참조입니다. http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

TRIGGER 권한은 트리거 작업을 활성화합니다. 테이블이 해당 테이블에 대한 트리거를 생성, 삭제 또는 실행하려면이 권한이 있어야합니다.


답변

VIEW DEFINER 사용자가 존재하지 않으면 덤프가 실패하는 것을 발견했습니다.

거기에 설명 된대로 변경


답변

이외에 Jannes의 대답에 mysqldump를 사용시 –tab 옵션은, 당신의 MySQL 사용자는 (각 덤프 테이블 탭으로 구분 된 텍스트 파일을 생성) 이 부여되어야합니다FILE 권한을뿐만 아니라 :

GRANT FILE ON *.* TO 'dump'@'%';

공식 문서 참조 : https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_tab

이 섹션에서 언급 한 내용 :

이 옵션은 mysqld 서버와 동일한 머신에서 mysqldump를 실행할 때만 사용해야합니다. 서버는 지정한 디렉토리에 * .txt 파일을 생성하므로 서버가 디렉토리에 쓰기 가능해야하며 사용하는 MySQL 계정에 FILE 권한이 있어야합니다. mysqldump는 동일한 디렉토리에 * .sql을 생성하므로 시스템 로그인 계정으로 쓸 수 있어야합니다.


답변