2011-12-28 6 views
60

가 나는 MySQL 사용자가 다음과 같은 파마와 덤프라는이 (트리거 !! 누락) :전체 스키마를 덤프하기 위해 mysqldump에 필요한 최소 GRANT?

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 

모두가 트리거를 위해, 그들은 누락을 제외하고 덤프 파일로 OK입니다!

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

그래서, 나는 ... 그것이 파마 문제입니다 추측 추가 보조금 내 덤프 MySQL이 무엇 : 나는 루트 MySQL 사용자와 mysqldump를 시도하는 경우

트리거

올바르게 덤프됩니다 사용자가 전체 덤프를 올바르게 수행해야합니까?

답변

83

당신은 또한 VIEW들과 EVENT의 의미 전체 덤프로 가정 할 때, 당신은해야합니다.

내 문제는 다음과 같습니다. no-data 덤프 만 만들고 싶다면 왜 SELECT이 필요합니까?

+1

5.5 이상에서는 실제로 트리거 코드를 덤프하는 데 TRIGGER 권한이 필요하지 않습니다. – bluecollarcoder

+1

나는 5.5를 사용 중이며 트리거 코드를 덤프하는 데 TRIGGER 권한이 필요합니다. – heuri

+0

제 경우에는 데이터베이스에'LOCK TABLES'가 필요합니다.'5.5.49-MariaDB'를 사용합니다 ... – 0xC0000022L

7

내가 필요한 추가 보조금을 찾았습니다 !! http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

트리거 권한이 트리거 작업을 할 수 있습니다 : 여기

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

당신은 공식 문서에 대한 참조를 가지고있다. 테이블에 대한 트리거를 작성, 제거 또는 실행하려면이 특권이 있어야합니다.

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의이있는 경우, 다음 불행히도 당신은 또한 EXECUTE 필요합니다

+3

이 이름은 실제로 트리거, – thenickdude

+0

을 유발하지 않는 설명 된대로 변경을, :의 "를 할 수있는 최소 GRANT 요구 사항이 무엇인지를 전체 덤프 ". 하나 : EVENT 및 SHOW VIEW가 누락되었습니다. – Jannes

+0

5.5 이상에서는 실제로 트리거 코드를 덤프하는 데 'TRIGGER' 권한이 필요하지 않습니다. – bluecollarcoder

1

VIEW DEFINER 사용자가 존재하지 않는 경우 언젠가 덤프가 실패합니다.

이 저자의 문제에 대한 대답은, 그 질문에 대답하지 않는다하더라도 there

+0

이것이 왜 실패했는지 확실하지 않아서 제 문제가 해결되었습니다. 나는 정의자를'person @ localhost' 대신에'person'으로 지정했습니다. 감사! – stianlik