Mengunduh dump MySQL dari baris perintah

306

Saya pindah dari Linode karena saya tidak memiliki keterampilan sysadmin Linux yang diperlukan; sebelum saya menyelesaikan transisi ke layanan yang lebih ramah-noob, saya perlu mengunduh konten dari database MySQL. Apakah ada cara saya bisa melakukan ini dari baris perintah?

Phillip Copley
sumber
mysqldump adalah apa yang Anda cari.
Faruk Sahin
1
@ Lazinkey Saya pikir Anda akan menemukan jawaban yang diterima dari salinan posting itu dan menempelkan isi jawaban saya (kata demi kata) ke bagian pertama dari jawaban mereka beberapa bulan kemudian ...
nickhar

Jawaban:

656

Anda dapat melakukannya dengan menggunakan fungsi baris perintah mysqldump .

Sebagai contoh:

Jika seluruh DB, maka:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Jika itu semua DB, maka:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

Jika tabel tertentu dalam DB, maka:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Anda bahkan bisa sejauh mengompresi otomatis output menggunakan gzip (jika DB Anda sangat besar):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Jika Anda ingin melakukan ini dari jarak jauh dan Anda memiliki akses ke server yang dimaksud, maka yang berikut ini akan berfungsi (anggap server MySQL ada di port 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Seharusnya drop .sqlfile di folder tempat Anda menjalankan command-line.

Sunting: Diperbarui untuk menghindari penyertaan kata sandi dalam perintah CLI, gunakan -popsi tanpa kata sandi. Ini akan meminta Anda untuk itu dan tidak merekamnya.

nickhar
sumber
1
Jawaban Anda bersama dengan stackoverflow.com/questions/2989724/… - Seharusnya melakukan apa yang ia minta, karena ia memang menyertakannya ia perlu diunduh. Baik itu atau wgetatau scpakan diperlukan untuk mengambil file tersebut setelah dibangun.
Zak
47
Catatan kecil bahwa lebih aman untuk tidak memasukkan kata sandi tepat di perintah. Hanya menggunakan opsi -p tanpa kata sandi yang akan meminta kata sandi saat dijalankan, dengan cara itu kata sandi tidak disimpan dalam riwayat perintah Anda (dan berpotensi diambil). Jadi, gunakan perintah berikut: mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name> db_backup.sql
Pitt
3
Alih-alih menggunakan >untuk menyimpan, saya lebih suka menggunakan -runtuk mencegah masalah dengan karakter asing, atau mimpi buruk tentang masalah penyandian, seperti yang dinyatakan dalam artikel ini .
Pathros
1
Untuk dataase yang besar / aktif diperbarui, gunakan parameter --single-transaction. Ini menciptakan pos pemeriksaan dan membantu memastikan konsistensi. Juga, gunakan sakelar --routines --triggers, jika Anda telah menyimpan prosedur / fungsi / pemicu
accord_guy
1
Anda harus menggunakan --result-file=db_backup.sqlbukan > db_backup.sql. Kutipan dari dokumentasi MySQL : "UTF-16 tidak diizinkan sebagai set karakter koneksi (lihat Set Karakter Klien Tidak Sah ), jadi file dump tidak akan dimuat dengan benar. Untuk mengatasi masalah ini, gunakan --result-fileopsi, yang menciptakan output dalam Format ASCII ".
Martin Braun
13

Di versi terbaru mysql, setidaknya di mysql, Anda tidak bisa memasukkan pass Anda di perintah secara langsung.

Anda harus menjalankan:

mysqldump -u [uname] -p db_name > db_backup.sql

dan kemudian akan meminta kata sandi.

Lorenzo Lerate
sumber
2
menghapus ruang antara -popsi dan kata sandi yang sebenarnya melakukan trik
y2k-shubham
8

Jika mengunduh dari server jarak jauh, berikut adalah contoh sederhana:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

-P menunjukkan Anda akan memasukkan kata sandi, itu tidak berhubungan dengan db_name. Setelah memasukkan perintah, Anda akan diminta kata sandi. Ketik dan tekan enter.

Andrew
sumber
5

Pada windows Anda perlu menentukan nampan mysql di mana mysqldump.exe berada.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

simpan ini ke file teks seperti backup.cmd

drooh
sumber
atau biasanya memiliki mysql di variabel PATH Anda sehingga Anda dapat menjalankan mysqlperintah dari mana saja tanpa berada di direktori itu.
behz4d
2

Buka Command prompt, dan langsung ketik perintah ini. Jangan masuk ke dalam mysql dan kemudian ketik perintah ini.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
sumber
1
Menyalin baris kode pertama dari jawaban yang diterima pada pertanyaan berusia 5 tahun adalah strategi berani untuk pertanian karma.
Phillip Copley
Saya mencoba perintah MySQLdump ini di dalam Mysql prompt dan tidak berfungsi. jadi jawab saja :-)
Nithin Raja
2

Pergi ke direktori instalasi MySQL dan buka cmd dari sana. Kemudian jalankan perintah di bawah ini untuk mendapatkan cadangan dari database Anda.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
pengguna8376416
sumber
1

Cukup ketik mysqldumpataumysqldump --help di cmd Anda akan ditampilkanhow to use

Inilah hasil cmd saya

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Suganthan Madhavan Pillai
sumber
1

Jika Anda menjalankan MySQL selain port default:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql
Anand Raj
sumber
1

Bagi mereka yang ingin mengetik kata sandi di dalam baris perintah. Itu mungkin tetapi merekomendasikan untuk meneruskannya di dalam tanda kutip sehingga karakter khusus tidak akan menyebabkan masalah.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Tara Prasad Gurung
sumber
-1

Gunakan ini Jika Anda memiliki database dengan nama archiedb, gunakan mysql -p --databases archiedb> /home/database_backup.sql

Dengan asumsi ini adalah linux, pilih di mana file cadangan akan disimpan.

Nabaasa Archie
sumber
shell> mysqldump -p mypassword --databases mydb> /home/backup.sql.
Nabaasa Archie
-1

Untuk pengguna Windows Anda dapat pergi ke folder mysql Anda untuk menjalankan perintah

misalnya

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P
sumber
1
Pertanyaan itu menyarankan agar MySQL berjalan di Linux.
gmauch
-1

Catatan: Langkah ini hanya datang setelah membuang file MySQL Anda (yang sebagian besar jawaban di atas telah ditangani).

Diasumsikan bahwa Anda memiliki file dump di server jauh Anda dan sekarang Anda ingin membawanya ke komputer lokal Anda.

Untuk mengunduh .sqlfile yang dibuang dari server jarak jauh ke komputer lokal Anda, lakukan

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Ruto Collins
sumber