pengembangan-web-mp.com

Bagaimana saya bisa menyalin tabel pengguna MySQL dari satu server ke yang lain?

Saya sedang menyiapkan server MySQL baru dan saya ingin memberikannya set nama pengguna yang sama, host yang diizinkan, dan kata sandi sebagai server yang ada (yang akan hilang).

Apakah akan berhasil hanya dengan melakukan dump tabel pengguna dan kemudian memuatnya di server baru?

Apakah ada cara yang lebih baik dari itu?

40
Agvorth
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

Haruskah melakukannya, ingatlah untuk menambahkan -u $USER dan -p$PASSWORD seperti yang dipersyaratkan

34
Dave Cheney

Saya akan melihat pada Percona Toolkit. Penjabaran dari pt-show-grants alat mengatakan semuanya ...

pt-show-grants mengekstrak, memesan, dan kemudian mencetak hibah untuk akun pengguna MySQL.

Mengapa Anda menginginkan ini? Ada beberapa alasan.

Yang pertama adalah dengan mudah mereplikasi pengguna dari satu server ke yang lain; Anda cukup mengekstrak hibah dari server pertama dan menyalurkan output langsung ke server lain.

Penggunaan kedua adalah untuk menempatkan hibah Anda ke dalam kontrol versi ....

21
Aaron Bush

Sementara dump database mysql mungkin akan berhasil, dalam pengalaman saya, mendokumentasikan semua akses dengan benar dan mengaturnya kembali dengan pernyataan GRANT jauh lebih baik. Ada dua manfaat melakukannya dengan cara ini:

  1. Anda akan memahami keamanan basis data Anda dan bagaimana penerapannya.
  2. Anda akan dapat menghapus akses yang tidak lagi diperlukan.
14
staticsan

Jawaban yang diterima (menggunakan mysqldump untuk membuat cadangan tabel mysql.user) adalah pendekatan yang sangat berbahaya jika Anda bermigrasi ke versi server baru.

Saya melakukan itu di masa lalu (memigrasikan pengguna dari Mysql 4 ke Mysql 5.1), dan kemudian saya memiliki masalah dalam mencoba untuk memberikan atau memodifikasi hak istimewa untuk pengguna database saya.

Ini terjadi karena struktur tabel mysql.users berbeda antara versi server mysql, seperti yang dijelaskan di sini:

https://dba.stackexchange.com/a/16441/18472

Jadi, berhati-hatilah jika Anda meningkatkan versi server Anda. Beberapa petunjuk di sini:

https://stackoverflow.com/a/13218162/710788

11
abu
11
Bruno Bronosky

mysqldump akan berfungsi, tetapi karena database mysql menggunakan ISAM, Anda bisa menyalin direktori ke server baru. Anda akan menemukan ini di tempat yang berbeda, tetapi lokasi paling umum untuk database mysql adalah/var/lib/mysql/mysql. Pastikan untuk menghentikan mysql di server baru, pindahkan direktori lama, salin direktori dan restart. Contoh menggunakan lokasi standar sebagai root:

# /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
5
Tim

sangat mudah untuk menjalankan perintah hibah. Ini seperti

GRANT ALL di database.table untuk "user" @ "Host" yang diidentifikasi oleh "kata sandi"

begitu

GRANT ALL pada basis data. * To "jack" @ "localhost" diidentifikasi oleh "somepass"

2
Trausti Thor