Dalam beberapa kasus, mungkin diinginkan untuk mengubah nama database MySQL dengan cepat. Meskipun dulu ada RENAME DATABASE
perintah di versi MySQL yang lebih lama yang dimaksudkan untuk melakukan tugas ini, RENAME DATABASE
sejak itu telah dihapus dari semua versi yang lebih baru untuk menghindari risiko keamanan.
Sebagai gantinya, kami akan secara singkat mengeksplorasi beberapa metode opsional yang dapat digunakan untuk mengganti nama database MySQL Anda dengan cepat dan aman.
Membuang dan Mengimpor Ulang
Saat bekerja dengan database yang relatif kecil, metode tercepat biasanya menggunakan mysqldump
perintah shell untuk membuat salinan dump dari seluruh database, kemudian mengimpor semua data ke database yang baru dibuat dengan nama yang tepat.
Mulailah dengan mengeluarkan mysqldump
berikut ini perintah dari prompt shell Anda, ganti username
yang sesuai , password
, dan oldDbName
nilai-nilai. mysqldump
digunakan untuk membuat cadangan fisik database, sehingga kita dapat menggunakan salinan ini untuk mengimpor data kembali ke database baru.
$ mysqldump -u username -p"password" -R oldDbName > oldDbName.sql
Kami menggunakan -p
tandai segera diikuti oleh kata sandi kami untuk terhubung ke database (tanpa spasi di antaranya) dan hindari permintaan entri kata sandi saat mengeluarkan perintah ini. Pastikan untuk meninggalkan kutipan di sekitarnya karena kata sandi dengan karakter unik dapat menyebabkan masalah eksekusi. -R
flag juga penting dan memberitahu mysqldump
untuk menyalin prosedur dan fungsi yang tersimpan bersama dengan data normal dari database.
Selanjutnya gunakan mysqladmin
perintah untuk membuat database baru:
$ mysqladmin -u username -p"password" create newDbName
Terakhir, dengan database baru yang dibuat, gunakan mysql
untuk mengimpor file dump yang kita buat ke database baru.
$ mysql -u username -p"password" newDbName < oldDbName.sql
Tiga perintah dasar dan database baru Anda telah dibuat. Setelah Anda memverifikasi semuanya sebagaimana dimaksud, Anda dapat melanjutkan dengan menghapus database lama.
Mengganti Nama Tabel dengan InnoDB
Jika Anda menggunakan MySQL versi 5.5 (atau lebih tinggi), kemungkinan besar Anda menggunakan mesin penyimpanan InnoDB, yang membuat tugas mengganti nama database menjadi cukup sederhana.
Singkatnya, Anda dapat menggunakan RENAME TABLE
perintah dalam prompt MySQL untuk secara efektif mengubah nama database tabel tertentu sambil menjaga nama tabel tetap utuh. Namun, melakukannya mengharuskan database dengan nama baru sudah ada, jadi mulailah dengan membuat database baru menggunakan mysqladmin
perintah shell seperti yang terlihat di atas.
Misalnya, jika kita sudah memiliki catalog
database yang ingin kita ganti namanya menjadi library
, pertama-tama kita buat library
baru basis data:
$ mysqladmin -u username -p"password" create library
Sekarang sambungkan ke mysql
prompt dan keluarkan RENAME TABLE
MySQL berikut ini pernyataan untuk tabel pilihan Anda:
mysql> RENAME TABLE catalog.books TO library.books;
Kami baru saja memindahkan keseluruhan books
tabel dari catalog
database ke library
baru kami basis data. Perintah ini dapat dijalankan secara manual untuk semua tabel yang relevan sesuai keinginan, atau kita dapat menyederhanakan tugas dengan skrip shell seperti yang terlihat di bawah ini.
Menggunakan Skrip Perintah Shell
Untuk semua kecuali database terkecil, secara manual menerbitkan RENAME TABLE
perintah untuk setiap tabel tidak akan sangat praktis atau efisien, tetapi untungnya kita dapat menggunakan perintah shell sederhana menggunakan mysql
utilitas untuk mengulang semua tabel di database lama kami dan mengganti namanya, sehingga memindahkannya ke database baru.
Ini adalah struktur dasar dari perintah:
$ mysql -u dbUsername -p"dbPassword" oldDatabase -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE oldDatabase.$table TO newDatabase.$table"; done
Jadi, untuk perpindahan kita dari catalog
lama database ke library
baru database, kami akan mengubah pernyataan sebagai berikut:
$ mysql -u dbUsername -p"dbPassword" catalog -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE catalog.$table TO library.$table"; done
Kami juga telah menambahkan beberapa tanda ke perintah kami:
-s
adalah tanda untuksilent mode
jadi ada lebih sedikit output ke shell.-N
mencegah keluaran nama kolom dari hasil.-e
menunjukkan pernyataan yang mengikuti-e
bendera harus dieksekusi kemudian shell berhenti. Ini berarti pernyataan'show tables'
dan"RENAME TABLE catalog.$table TO library.$table"
dieksekusi sebagai pernyataan SQL normal, seperti yang diinginkan.
Itu saja. Database MySQL Anda sekarang telah diganti namanya secara efektif.