Mysqldump ile yedekleme amacıyla nasıl salt okunur bir MySQL kullanıcısı oluşturabilirim?


14

automysqlbackupBenim mysql veritabanlarını dökümü için komut dosyası kullanıyorum , ancak kök veritabanı parolamı düz metin dosyasında saklamıyorum böylece bunu yapmak için salt okunur bir kullanıcı istiyorum.

Ben böyle bir kullanıcı oluşturdum:

grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';

mysqldump( automysqlbackupDoğrudan ya da doğrudan) çalıştırdığımda aşağıdaki uyarıyı alıyorum:

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES

Yanlış mı yapıyorum? Salt okunur kullanıcı için ek hibelere ihtiyacım var mı? Yoksa sadece masayı rootkilitleyebilir information_schemami? Neler oluyor?

Düzenle:

GAH ve şimdi çalışıyor. Daha önce FLUSH PRIVILEGES çalıştırmamış olabilirim.

Bir yana, bu ne sıklıkta otomatik olarak gerçekleşir?

Düzenle:

Hayır, çalışmıyor. mysqldump -u username -p --all-databases > dump.sqlManuel olarak çalıştırmak bir hata oluşturmaz, ancak information_schema dökümü yapmaz. automysqlbackuphata veriyor.


Hata! mysqldumpMysqldump için man sayfasından BİLGİ_SCHEMA veritabanını dökmez. Bu veritabanını komut satırında açıkça adlandırırsanız, mysqldump sessizce yok sayar. Man sayfası güncel değil (ve bir uyarı oluşturur) veya automysqlbackupdöküm için bazı ek denetimler yapıyor gibi görünüyor information_schema. Hangisinin olduğundan emin değilim, ancak kullanıcı hibeleriyle ilgili değil.
stickmangumtarafından

1
Bu bir HİBE sorunu değil. BİLGİ_SCHEMA'yı yedeklemenize gerek yoktur (Bkz: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger

1
SmallClanger'ın söylediklerine eklemek için, BİLGİ_SCHEMA sanal bir veritabanıdır, MySQL her yeniden başlatıldığında yeniden oluşturulur, bu yüzden yine de geri yükleyemeyeceğiniz için yedeklemenin bir anlamı yoktur.
John Gardeniers

Yanıtlar:


4

Bu izinler mysqldump için gereken her şey olmalıdır.

LOCK TABLES verdiğiniz ve LOCK TABLES'da hata verdiği için izinler tutarsız görünüyor. Koştun FLUSH PRIVILEGESmu?


1

Hata ... man sayfasından mysqldump:

mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it

Man sayfasının güncel olmadığını (ve bir uyarıyı artırdığını) veya automysqlbackupdöküm için ek kontroller yaptığı anlaşılıyor information_schema.

Hangisinin olduğundan emin değilim, ancak kullanıcı hibeleriyle ilgili değil.

Düzenle

Evet, automysqlbackup2.5.1 sürümünde bir hata (Ubuntu 10.04 altında MySQL 5.1.41 kullanarak) - information_schemaolmaması gerektiğinde yedeklemeye çalışır .

Düzeltme: Ekle information_schemaiçin DBEXCLUDEkomut satırında 76 üzerinde.


Bu bir HİBE sorunu değil. BİLGİ_SCHEMA'yı yedeklemenize gerek yoktur (Bkz: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger

SmallClanger'ın söylediklerine eklemek için, BİLGİ_SCHEMA sanal bir veritabanıdır, MySQL her yeniden başlatıldığında yeniden oluşturulur, bu yüzden yine de geri yükleyemeyeceğiniz için yedeklemenin bir anlamı yoktur.
John Gardeniers

0

Kullanıcı oluştur

GRANT USAGE ON *.* TO 'dump'@'localhost' IDENTIFIED BY 'plaintext-pass';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost';

Ayrıcalıkları kontrol edin

mysql> SHOW GRANTS FOR dump@'localhost';
+-----------------------------------------------------------------------------------------------+
| Grants for dump@localhost                                                                     |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dump'@'localhost'                                                      |
| GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost' |
+-----------------------------------------------------------------------------------------------+

Dosyası oluşturmak için yor favori düzenleyici kullanın ~/.my.cnfilechmod 400

[client]
user=dump
password=plaintext-pass

Örnek olarak dökümler için klasör oluşturun

mkdir ~/db-dumps

Çalışıp çalışmadığını kontrol edin

mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/manual-my-db-dump-`date +%F`.sql.gz

İsteğe bağlı olarak döküm yapabilir dailyve weeklydaha dailyeski ayları kaldırabilirsiniz

#m h  dom mon dow   command
0  3  *   *   0,2-6 /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/daily-my-db-dump-`date +%F`.sql.gz;
0  3  *   *   1     /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/weekly-my-db-dump-`date +%F`.sql.gz;
0  4  *   *   *     /usr/bin/find ~/db-dumps/ -name "daily-*" -type f -mtime +30 -exec rm -f {} \;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.