Komut İstemi'ni kullanarak bir mysql veritabanı nasıl verilir?


342

Ben oldukça büyük bir veritabanı var, bu yüzden Komut İstemi'ni kullanarak vermek istiyorum ama nasıl yapacağımı bilmiyorum.

WAMP kullanıyorum.


6
DOS? Windows 98 mi kullanıyorsunuz? Yoksa komut istemini mi kastediyorsunuz?
jle

Eğer wamp kullanarak, ihracat seçeneği ile phpmyadmin de olmalıdır
Lars C. Magnusson

Yanıtlar:


537

Önce komut satırınızın mysql komutunu tanıyıp tanımadığını kontrol edin. Değilse komuta gidin ve yazın:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

Ardından veritabanınızı dışa aktarmak için bu komutu kullanın:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Daha sonra veritabanı parolası girmeniz istenir .

Bu, bu komutu yürütürken veritabanını şu anda bulunduğunuz yola dışa aktarır

Not: Burada hem içe aktarma hem de dışa aktarma ile ilgili bazı ayrıntılı talimatlar verilmiştir


7
hata verir "mysqldump: Hata var: 1049: Veritabanını seçerken bilinmeyen veritabanı 'parola' ama" -p kullanıcı parolası "nı sildiğimde çalıştı
Ateş Danış

11
@ AteşDanış -pve arasında boşluk yoktur thepassword.
Charles Wood

44
Sadece kullanmanız gerekir -pve daha sonra parola istenir. Bu şekilde parolanızı .bash_history
kaydetmekten

7
Benim için bu komut çalışır: mysqldump -u KullanıcıKullanıcı -p VeritabanınızAdı> wantedsqlfile.sql (Komutu yazın, enter tuşuna basın, ardından Parola girilir).
shasi kanth

3
Komut satırında bir parola belirtmenin güvenli olmadığı düşünülmelidir.
wappy

112

Aşağıdaki komutu kullanmanız yeterlidir,

İhracat için:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

İthalat için:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

Not: '-p' anahtar kelimesi ile şifreniz arasında boşluk yoktur.


1
Sanırım WAMP - Windows ... gunzip / gzip kullanıyor Windows ile birlikte değil aslında özledim. Bazı şeyleri yükledikten sonra komutunu çalıştırman mümkün olabilir, ama bence bu gerçeği kaçırdın.
Rolf

2
gzip -9Maksimum sıkıştırma kullanıldığından, belirtmek sonuçta elde edilen dosyayı biraz daha küçük hale getirir.
AntonK

39

Her şeyden önce açık komut istemi daha sonra bin dizinini cmd'de açın (umarım cmd komutlarının farkındasınızdır ) WAMP program dosyalarındaki MySql klasörünüzün bin dizinine gidin .

komutu çalıştır

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

enter tuşuna basın sistemi belirli veritabanını dışa aktarır ve verilen konuma sql dosyası oluşturur.

umarım anladın :) herhangi bir sorunuz varsa lütfen bana bildirin.


Arkadaşım süreci biraz açıklamaya çalıştım. daha sonra doğrudan komut vermek
Mitesh vaghela

38

Aşağıdaki komutu kullanabilirsiniz,

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

ve oluşturulan dosya bu komutu çalıştırdığınız dizinde bulunur.

Şunun için resmi referans hakkında daha fazla bilgi bulabilirsiniz mysqldump: Import Export MySQL DB

Not : Kullanım --databasesyerine --databasesonuncusu artık desteklenir beri.

Zevk almak :)


4
"KİLİT TABLOLARI kullanılırken erişim reddedildi" gibi bir hata alan kullanıcılar, komuta "--single-transaction" parametresini eklemelisiniz.
Skyrpex

Bir hatayla karşılaştım mysqldump: [ERROR] unknown option '--database'ama --databasebunun dışlanması işe yaradı.
hejdav

@Skyrpex Teşekkürler, aradığım çözüm buydu.
Martijn

22

Bu yoldaki komut istemine gidin,

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

Ardından veritabanınızı dışa aktarmak için bu komutu verin ( -p'den sonra boşluk yok )

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql


21

Mysql örneğinizi şununla bulun:

which mysql

Bu doğruysa, aşağıdakilerle dışa aktarın (başka bir deyişle, bin içindeki mamp klasörünüzdeki mysql örneğine gidin):

mysqldump -u [username] -p [password] [dbname] > filename.sql

Ve eğer aynı zamanda ziplemek isterseniz:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

Daha sonra bu dosyayı şu sunucularla taşıyabilirsiniz:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(burada xxx.xxx.xxx.xxx, sunucunun IP adresidir)

Ve sonra şu şekilde içe aktarın:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
Yine, W AMP => Pencereler. hangi bir Linux komut olduğunu. gunzip / gzip Windows ile birlikte verilmez ve kullanılamayabilir. scp ... anladın mı?
Rolf

Opentuned'in cevabı harika . Küçük bir şey, gerçek olanı passwordkomut satırından kaldırmaktır : mysqldump -u [kullanıcı adı] -p [dbname]> dosyaadı.sql Bu, kişilerin geçmişinizde parola aramasını engeller.
Vincent

1
@Opentuned, Linux fetişi nedir?
Pacerier

for -p [pasword] yakın olmalıdır örn.: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Uyarı: Komut satırı arabiriminde bir parola kullanmak güvenli olmayabilir.
Marwan Salim

19

PROSEDÜRLERİ, FONKSİYONLARI ve TETİKLEYİCİLERİ de dışa aktarmak için --routinesparametre ekleyin :

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql


Anahtar --routinesfark yaratır :) Sadece PROSEDÜRLER, FONKSİYONLAR & TETİKLERİN nasıl dışa aktarılacağına dair ipuçları var mı? Anahtarı unutmuş ve "algoritmalar" olmadan "saf" DB ihraç edenler için :)
AntonK

BTW --eventsOlay Zamanlayıcısı olaylarını boşaltmak için anahtar gereklidir ve TRIGGER'ler belirtilmedikçe her zaman dışa aktarılır--skip-triggers ( 7.4.5.3 Kayıtlı Programları Boşaltma )
AntonK

10

Veritabanınızı dışa aktarmak için bu komutu verin, buna tarih de dahil

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(-p'den sonra boşluk yok)


--databasesCREATE DATABASE XYZ;USE XYZ;
Belirtmenin, ifadeyi

8

D: sürücüsüne wamp sunucumu yükledim, böylece u komut satırından aşağıdaki yola gitmek zorundasınız -> (ve c: sürücüsüne ur wamp'ı yüklediyseniz, sadece d: wtih: burada değiştirin)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

buraya kök benim phpmyadmin şifresi kullanıcı phpmyadmin için şifredir , bu yüzden u o yerde herhangi bir kök için herhangi bir şifre ayarlamadıysanız, db_name veritabanı (hangi veritabanı ur yedek alarak), backupfile.sql olduğunu ur veritabanının ur yedeklemesini istediğiniz dosya ve u da yedek dosya konumunu (d: \ backupfile.sql) bilgisayarınızdaki diğer herhangi bir yere değiştirebilir


Bunu yapmak için bulduğum tüm yollardan, bu cevap benim için çalışan tek cevaptı. MySQL sürüm 5.6 kullanıyorum, bu yüzden yol komut istemi için ... \ MySQL \ MySQL Server 5.6 \ bin oldu. MySQL yönetici kullanıcı adınızı ve parolanızı kullanmanız gerekecektir, belirli bir veritabanı için belirtilenler çalışmaz. Teşekkürler Sachin. V.5.6 için MySQL kılavuzundaki talimatlar bile çalışmaz. Sözdizimi burada eksik.
Max West

Gerçekten -pve ile arasındaki boşlukla çalışır mı password?
Davis

7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Localhost'ta örnek

mysqldump -h localhost -p -u root cookbook > cookbook.sql

4

Tüm bu çözümlerle ilgili sorun ( > yeniden yönlendirici karakterini ), dökümünüzü veritabanınızın bazı karakterlerinin kodlamasını bozabilecek stdout'tan yazmanızdır.

Bir karakter kodlama sorununuz varsa. Gibi :

HATA 1064 (42000): SQL sözdiziminizde bir hata var; yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın ...

sonra, dosyayı yazmak için seçeneği kullanmanız GEREKİR-r .

MySQL

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

Docker'ı kullanma

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

Not: bu, geçerli yolu örneğin içinde döküm olarak bağlar.

Cevabı burada bulduk

Tersine, <dökümünüzü veritabanınıza aktarmak için kullanmayın , yine utf8 olmayan karakterleriniz iletilemeyebilir; ancak kaynak seçeneğini tercih edin.

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql

1

Sözdizimi

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

Misal

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

Nerede d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe gerçek mysqldump.exe yolunu olacak mydbname sen ihracat ve istediğiniz veritabanının adıdır d: \ mydb.sql yol nerede dışa aktarılan veritabanını saklamak istiyorsunuz.


0

Wamp sunucusu kullandım. Denedim

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root mysql için kullanıcı adım, ve herhangi bir şifreniz varsa bunu belirtin:

-p[yourpassword]

Umarım çalışır.


- parolayı da yazacaksanız, parola kullanılmalıdır
Erce

0

Windows işletim sistemi için :

Mysqldump komutunu çalıştırmaya çalışırken 1064 mysql (42000) hatası alırsanız , geçerli terminalden çıkın. Ve mysqldump komutunu yürütün.

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql

0

Docker üzerinde çalışan ve aynı ulaşmak için aşağıdaki komut ile geldi db dökümü almaya çalışıyordu:

docker exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password = <db_password> db_name> .sql

Bu yardımcı olur umarım!


-2

Bu komut dosyasını , bu bağlantıda verilen terminalden herhangi bir veritabanını vermek veya almak için kullanabilirsiniz : https://github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_import_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.