Yeni bir MySQL sunucusu kuruyorum ve aynı kullanıcı adını, izin verilen ana bilgisayarları ve şifreleri (ki gidiyor) mevcut bir sunucu olarak vermek istiyorum.
Kullanıcılar tablosunun bir dökümünü alıp yeni sunucuya yüklemek işe yarar mı?
Bundan daha iyi bir yol var mı?
oldserver$ mysqldump mysql > mysql.sql newserver$ mysql mysql < mysql.sql newserver$ mysql 'flush privileges;'
Bunu yapmalı,
-u $USER ve
-p$PASSWORD gereğince, gerektiği gibi
Percona Toolkit 'a bir göz atacağım.
pt-show-grants aracı her şeyi söylüyor ...
pt-show-grantsMySQL kullanıcı hesapları için hibeler alır, sipariş verir ve yazdırır.
Bunu neden istiyorsun? Birkaç sebep var.
Birincisi, kullanıcıları bir sunucudan diğerine kolayca çoğaltmaktır; ilk sunucudan hibeleri çıkarabilir ve çıktıyı doğrudan başka bir sunucuya aktarabilirsiniz.
İkinci kullanım, hibelerinizi sürüm kontrolüne yerleştirmektir ....
mysql veritabanının bir dökümü muhtemelen işe yarayacak olsa da, benim deneyimime göre, tüm erişimi düzgün bir şekilde belgelemek ve
GRANT ifadeleriyle tekrar kurmak çok daha iyi. Bu şekilde yapmanın iki faydası vardır:
Yeni bir sunucu sürümüne geçiş yapıyorsanız, kabul edilen yanıt (mysql.user tablosunu yedeklemek için mysqldump kullanarak) çok tehlikeli bir yaklaşımdır.
Geçmişte (Mysql 4'ten Mysql 5.1'e geçiş yapan kullanıcılar) bunu yaptım ve daha sonra veritabanı kullanıcılarıma ayrıcalıklar vermeye veya değiştirmeye çalışırken sorun yaşadım.
Bunun nedeni, burada açıklandığı gibi mysql.users tablo yapısının, mysql sunucu sürümleri arasında farklılık göstermesi nedeniyle olur:
Bu nedenle, sunucu sürümünüzü yükseltiyorsanız dikkatli olun. Burada bazı ipuçları:
Bu zaten burada çözüldü MySQL'den ayrıcalıkları nasıl dışa aktarabilir ve sonra yeni bir sunucuya aktarabilirim?
mysqldump çalışır, ancak mysql veritabanı ISAM kullandığından, dizini yeni sunucuya kopyalayabilirsiniz. Bunu farklı yerlerde bulacaksınız, ancak mysql veritabanı için en yaygın konum/var/lib/mysql/mysql olacaktır. Yeni sunucuda mysql'i durdurduğunuzdan, eski dizini yoldan çıkardığınızdan, dizini kopyaladığınızdan ve yeniden başlattığınızdan emin olun. Kök olarak standart konumları kullanan bir örnek:
# /etc/init.d/mysqld stop # cd /var/lib/mysql # mv mysql ../mysql.backup # rsync -a [email protected]:/var/lib/mysql/mysql . # /etc/init.d/mysql start
hibe komutlarını çalıştırmak çok kolaydır. Gibi
"Parola" ile tanımlanan "kullanıcı" @ "Ana bilgisayar" için database.table üzerinde HİBE VERİN
yani
Veritabanında TÜMÜNÜ VERİN. * "Somepass" ile tanımlanan "jack" @ "localhost" a