2011-12-28 28 views
60

Ben MySQL kullanıcı aşağıdaki Perma ile dökümü denilen var (tetikleyiciler !! eksik):Tam şemaya dökmek için mysqldump tarafından ihtiyaç duyulan minimum GRANT'lar?

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

Ben dökümü kullanıcıyı kullanarak tüm verileri (dahil tetikleyiciler ve prosedürler) dökümü istiyorum. Ben şu şekilde mysqldump çağırır:

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

Her şey tetikleyiciler için, bunlar eksik dışında atılmış dosya ile sorun yok !!

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

Yani, ... bu bir Perma konudur tahmin ekstra hibe benim dökümü MySQL nelerdir: Ben kök MySQL kullanıcı ile mysqldump çalışırsanız

tetikleyiciler

doğru dökülmektedir Kullanıcı tam dökümünü doğru şekilde yapmak için ihtiyacı var?

cevap

83

ayrıca VIEW s ve EVENT s ortalama tam dökümü tarafından varsayarsak, gerekir.

Kendi sorunum: yalnızca veri dökümü yapmak istemediğim halde neden SELECT'a ihtiyacım var?

+1

5.5 ve üzeri için, tetikleme kodunu dökmek için TRIGGER ayrıcalığına ihtiyacınız yok. – bluecollarcoder

+1

5.5 kullanıyorum ve tetikleme kodunu dökmek için TRIGGER ayrıcalığına ihtiyaç duydum. – heuri

+0

Benim durumumda da veritabanına 'LOCK TABLOLAR '' da ihtiyacım var. Kendimi dökmeye çalışıyorum ... '5.5.49-MariaDB' kullanma – 0xC0000022L

7

İhtiyacım olan ekstra GRANT'ı buldum !! http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

TRIGGER ayrıcalık tetik işlemlerini sağlar: Burada

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

Eğer resmi doküman üzerinde başvuru var. Bu tablo için tetikleyici oluşturmak, bırakmak veya yürütmek için bir tablo için bu ayrıcalığa sahip olmanız gerekir.

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'@'%'; 

ve bir işlevi gerçekleştirmek VIEW s varsa, maalesef ayrıca EXECUTE gerekir:

+3

adı aslında TETİK, – thenickdude

+0

TETIKLE değildir anlatıldığı gibi değiştirme it, "Bir yapmaya asgari HİBE gereksinimleri nelerdir tam çöplük. Biri için: OLAY ve GÖSTERİM GÖRÜNÜMÜ eksik. – Jannes

+0

5.5 ve üstü için aslında tetikleme kodunu dökmek için TRIGGER’in ayrıcalığına ihtiyacınız yok. – bluecollarcoder

1

Bazen DEFINER VIEW DEFINER kullanıcısı yoksa, boşaltma başarısız olur.

bu yazar sorununa bir cevap, bu soruya cevap vermez olsa bile there

+0

Neden bu aşağıya çekildi, emin değilim sorunum çözüldü. Kişi @ localhost' yerine “person” olarak tanımlamıştım. Teşekkürler! – stianlik