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.