it-swarm.dev

MySQL kullanıcılarını yedekle

MySQL kullanıcılarını ve ayrıcalıklarını nasıl yedeklerim? 

MySQL gibi bir şey var mı? 

Gibi bir şey arıyorum:

mysqldump -d -u root -p MyTable > Schema.sql
27
Cherian
mysql -BNe "select concat('\'',user,'\'@\'',Host,'\'') from mysql.user where user != 'root'" | \
while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql
36
spirit

Kullanarak mysql veritabanını yedekleyebilirsiniz.

mysqldump -u root -p mysql > mysql.sql

ve mysql veritabanını çalıştırarak geri yükleme 

 mysql -uroot -p mysql < mysql.sql

Unutma 

FLUSH PRIVILEGES

dökümü geri yükledikten sonra.

Umarım yardımcı olur...

21
Shubhansh

Şimdiye kadar MySQL'deki deneyimim, kullanıcıyı ve ayrıcalıklarını bir komut satırı aracılığıyla yedekleyecek bir şey görmedim.

Ancak bu kritik verileri mysql'yi yedekleyerek yedekleyebilirim.

mysqldump -u root -p mysql > mysql.sql
14
simplyharsh

Kullanıcılar ve ayrıcalıklar 'mysql' adlı veritabanında saklanır. 'MySQL' adlı veritabanındaki tabloları yedeklemek için mysqldump kullanabilirsiniz.

6
Zoredache

Yukarıda verilen senaryolar genel bir fikir verir, ancak verimsizdir. MySQL 'in + 1 kez çalıştırıp çalıştırıyorlar. MySQL'e sadece iki çağrı yapılabilir.

mysql ${logininfo} -B -N -e "SELECT CONCAT('\'',user,'\'@\'',Host,'\'') from user where user != 'root'" mysql | \
while read uh
do
   echo "SHOW GRANTS FOR ${uh};"
done | mysql ${logininfo} -B -N | sed -e 's/$/;/' > ${outfile}

Kökten başka bir kullanıcı varsa, yedekleme yapmak istemediğiniz veya kullanacağınız bir kullanıcı varsa, ilk mysql çağrısının nerede yan tümcesinde!.

0
cdbunch

Günlük uygulama MySQL kullanıcıları ve onların ayrıcalıkları için komut dosyası kullanmak iyi bir uygulamadır. Birine bir göz atın:

#!/bin/sh

HOSTNAME="localhost"

mysql -h $HOSTNAME -B -N -e "SELECT CONCAT('\'', user,'\'@\'', Host, '\'') FROM user WHERE user != 'debian-sys-maint' AND user != 'root' AND user != ''" mysql > mysql_all_users_$HOSTNAME.txt

while read line; do mysql -h $HOSTNAME -B -N -e "SHOW GRANTS FOR $line"; done < mysql_all_users_$HOSTNAME.txt > mysql_all_users_$HOSTNAME.sql

sed -i.bak 's/$/;/' mysql_all_users_$HOSTNAME.sql

rm mysql_all_users_$HOSTNAME.txt
rm mysql_all_users_$HOSTNAME.sql.bak

Bu betiğin sonucu, kullanıcılara ve ayrıcalıklara sahip mysqldump dosyası olacaktır.

Not; MySQL'iniz şifre gerektiriyorsa - -p veya -u username -p komutunu iki yere mysql -h $HOSTNAME ifadesinden sonra koyun.

0
Oleh Vasylyev

Percona'nın bunun için harika bir aracı var. pt-show-grants kullanıcıları ve izinlerini atar ve böylece kolayca yeniden yükleyebilirsiniz.

https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html

0
Josh Wilson