Como exportar um banco de dados mysql usando o prompt de comando?

342

Como tenho um banco de dados bastante grande, desejo exportá-lo usando o Prompt de Comando, mas não sei como.

Estou usando o WAMP.

Starx
fonte
6
DOS? você está usando o Windows 98? Ou você quer dizer o prompt de comando?
jle
De você estiver usando wamp, você também deve ter phpmyadmin, com a opção de exportação
Lars C. Magnusson

Respostas:

536

Primeiro verifique se sua linha de comando reconhece o comando mysql. Caso contrário, vá para o comando e digite:

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

Em seguida, use este comando para exportar seu banco de dados:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Você será solicitado a fornecer a senha do banco de dados .

Isso exporta o banco de dados para o caminho em que você está atualmente, enquanto executa este comando

Nota: Aqui estão algumas instruções detalhadas sobre importação e exportação

Starx
fonte
7
emite erro "mysqldump: Erro: 1049: Banco de dados desconhecido 'thepassword' ao selecionar o banco de dados", mas funcionou quando excluí "-p userpassword"
Ateş Danış
11
@ AteşDanış Não há espaço entre -pe thepassword.
Charles Wood
44
Você deve apenas usar -pe, em seguida, será solicitada a senha. Desta forma, você evitar que a sua senha salva por exemplo,.bash_history
Nuala
7
Para mim, este comando funciona: mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql (Digite o comando, pressione enter e a Senha será inserida).
Shasi kanth
3
A especificação de uma senha na linha de comando deve ser considerada insegura.
Wappy
112

Basta usar o seguinte comando,

Para exportar:

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

Para importação:

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

Nota: Não há espaço entre a palavra-chave '-p' e sua senha.

Srinivasan.S
fonte
11
Eu acho que você perdeu o fato de que ele está usando WAMP - Windows ... gunzip / gzip não está incluído no Windows. Pode ser possível executar seu comando depois de instalar algumas coisas, mas acho que você perdeu esse fato.
Rolf
2
A especificação gzip -9torna o arquivo resultante um pouco menor, porque a compactação máxima é usada.
AntonK
39

Primeiro, abra o prompt de comando e abra o diretório bin no cmd (espero que você esteja ciente dos comandos do cmd ) vá para o diretório bin da sua pasta MySql nos arquivos de programa WAMP .

comando de execução

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

pressione enter system exportará um banco de dados específico e criará um arquivo sql para o local especificado.

Espero que você entendeu :) se você tiver alguma dúvida, por favor me avise.

Mitesh vaghela
fonte
Meu amigo, tentei explicar um pouco o processo. em vez de dar o comando direto
Mitesh Vaghela
38

Bem, você pode usar o comando abaixo,

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

e o arquivo gerado estará disponível no mesmo diretório em que você executou esse comando.

Você pode encontrar mais informações sobre a referência oficial para mysqldump: Import Export Export MySQL DB

Nota : use em --databasesvez de --databasejá que o último não é mais suportado.

Desfrutar :)

Umesh Patil
fonte
4
Para aqueles que receberem um erro como "Acesso negado ao usar LOCK TABLES", adicione o parâmetro "--single-transaction" ao comando.
Skyrpex 19/10/2015
Eu recebi um erro, mysqldump: [ERROR] unknown option '--database'mas a exclusão --databasedele funcionou.
hejdav
@ Skyrpex Obrigado, essa foi a solução que eu estava procurando.
Martijn
22

Vá para o prompt de comando neste caminho,

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

Em seguida, forneça este comando para exportar seu banco de dados ( sem espaço após -p )

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

user2484830
fonte
21

Localize sua instância do mysql com:

which mysql

Se isso estiver correto, exporte com o seguinte (navegue até a instância do mysql na sua pasta mamp no bin):

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

E se você deseja compactá-lo ao mesmo tempo:

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

Você pode então mover este arquivo entre servidores com:

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

(onde xxx.xxx.xxx.xxx é o endereço IP do servidor)

E importe-o com:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]
Opentuned
fonte
4
Novamente, W AMP => Windows. que é um comando do Linux. O gunzip / gzip não está incluído no Windows - e pode não estar disponível. scp ... você entendeu.
Rolf
A resposta do Opentuned é ótima . Uma coisa pequena é remover o real passwordda linha de comando: mysqldump -u [nome do usuário] -p [nome do db]> filename.sql Isso evita que as pessoas pesquisem no seu histórico a senha.
Vincent Vincent
11
@ Opentuned, o que há com o fetiche do linux?
217 Pacerier
para -p [senha] deve estar próximo, por exemplo: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Aviso: O uso de uma senha na interface da linha de comandos pode ser inseguro.
Marwan Salim
19

Para exportar também PROCEDIMENTOS, FUNÇÕES E DISPARADORES, adicione o --routinesparâmetro:

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

arcadius
fonte
O switch --routinesfaz a diferença :) Alguma dica de como exportar apenas PROCEDIMENTOS, FUNÇÕES E DISPARADORES? Para aqueles que se esqueceram sobre o interruptor e exportados "puro" DB sem os "algoritmos" :)
AntonK
BTW o interruptor --eventsé necessário para despejar eventos Event Scheduler, e os gatilhos são sempre exportado, a menos --skip-triggersé especificado (de acordo com 7.4.5.3 Dumping Programas Armazenados )
AntonK
10

Dê este comando para exportar seu banco de dados, isso também incluirá a data

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

(sem espaço após -p)

Ossama
fonte
Note, que especificar --databasesirá inserir declarações como CREATE DATABASE XYZ;e USE XYZ;, o que não é útil quando a importação do SQL em outro banco de dados com outro nome ...
AntonK
8

Eu instalei meu servidor wamp na unidade D: então você tem que ir para o seguinte caminho a partir da linha de comando ur -> (e se você tiver instalado o seu wamp na unidade c:, substitua o d: wtih c: aqui)

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"

aqui root é usuário da minha senha phpmyadmin é a senha do phpmyadmin, portanto, se você não tiver definido nenhuma senha para root, apenas nada nesse tipo, db_name é o banco de dados (para o qual o banco de dados está fazendo o backup), backupfile.sql é o arquivo no qual você deseja fazer backup do banco de dados e também pode alterar o local do arquivo de backup (d: \ backupfile.sql) de para qualquer outro local do seu computador

Sachin
fonte
De todas as maneiras que encontrei para fazer isso, essa resposta é a única que funcionou para mim. Estou usando o MySQL versão 5.6, então o caminho era ... \ MySQL \ MySQL Server 5.6 \ bin para o prompt de comando. Você precisará usar seu nome de usuário e senha de administrador do MySQL, aqueles especificados para um banco de dados específico não funcionarão. Obrigado Sachin. Mesmo as instruções no manual do MySQL para v.5.6 não funcionam. A sintaxe está incompleta lá.
Max Oeste
Realmente funciona com o espaço entre -pe password?
Davis
7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Exemplo no host local

mysqldump -h localhost -p -u root cookbook > cookbook.sql
Nanhe Kumar
fonte
4

O problema com todas essas soluções (usando o >caractere redirecionador) é que você escreve seu dump a partir do stdout, o que pode interromper a codificação de alguns caracteres do seu banco de dados.

Se você tiver um problema de codificação de caracteres. Tal como :

ERRO 1064 (42000): você tem um erro na sintaxe do SQL; verifique o manual que corresponde à sua versão do servidor MySQL para obter a sintaxe correta perto ...

então, você DEVE usar a -ropção para escrever o arquivo.

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

Usando o Docker

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

Nota: isso monta o caminho atual como despejo dentro da instância.

Encontramos a resposta aqui

Por outro lado, não use <para importar seu despejo para o banco de dados; seus caracteres não utf8 podem não ser transmitidos; mas prefira a opção de fonte.

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

Sintaxe

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

Exemplo

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

onde d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe será o caminho atual do mysqldump.exe, mydbname é o nome do banco de dados que você deseja exportar e d: \ mydb.sql é o caminho em que você deseja armazenar o banco de dados exportado.

Shailesh Prajapati
fonte
0

Eu usei o servidor wamp. Eu experimentei

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

root é meu nome de usuário para mysql e, se você tiver alguma senha, especifique-a com:

-p[yourpassword]

Espero que funcione.

Aswin k
fonte
necessidade --password para ser usado se você está tring para digitar a senha bem
Erce
0

Para o sistema operacional Windows :

Quando você receber o erro 1064 mysql (42000) ao tentar executar o comando mysqldump , saia do terminal atual. E execute o comando mysqldump.

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

Eu estava tentando pegar o dump do db que estava sendo executado na janela de encaixe e criei o comando abaixo para obter o mesmo:

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

Espero que isto ajude!

Vikash Kumar Choudhary
fonte
-2

Você pode usar esse script para exportar ou importar qualquer banco de dados do terminal fornecido neste link: 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
Ridhwan Luthra
fonte