Baixando o dump do MySQL na linha de comando

306

Estou me afastando do Linode porque não tenho as habilidades necessárias para administrador de sistemas Linux; Antes de concluir a transição para um serviço mais amigável para noob, preciso fazer o download do conteúdo de um banco de dados MySQL. Existe uma maneira de fazer isso na linha de comando?

Phillip Copley
fonte
mysqldump é o que você está procurando.
Faruk Sahin
1
@AZinkey Eu acho que você vai encontrar a resposta aceita de que a cópia poste e colado o conteúdo da minha resposta (palavra por palavra) na primeira parte de seus meses de resposta mais tarde ...
nickhar

Respostas:

656

Você pode fazer isso usando a função de linha de comando mysqldump .

Por exemplo:

Se for um banco de dados inteiro, então:

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

Se forem todos os bancos de dados, então:

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

Se houver tabelas específicas em um banco de dados, então:

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

Você pode até compactar automaticamente a saída usando gzip (se o seu banco de dados for muito grande):

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

Se você quiser fazer isso remotamente e tiver acesso ao servidor em questão, o seguinte funcionaria (presumindo que o servidor MySQL esteja na porta 3306):

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

Ele deve soltar o .sqlarquivo na pasta da qual você executa a linha de comando.

EDIT: atualizado para evitar a inclusão de senhas nos comandos da CLI, use a -popção sem a senha. Ele solicitará e não será gravado.

nickhar
fonte
1
Sua resposta em conjunto com stackoverflow.com/questions/2989724/… - deve fazer o que ele está pedindo, pois ele incluiu que ele precisa do download. É isso ou um wgetou scpserá necessário para recuperar o arquivo após a compilação.
Zak
47
Observe que é mais seguro não digitar a senha diretamente no comando. Somente o uso da opção -p sem senha solicitará a senha quando executada, dessa forma a senha não será armazenada no histórico de comandos (e potencialmente recuperada). Portanto, usando o seguinte comando: mysqldump -P 3306 -h [endereço_ip] -u [nome] -p nome_bd> db_backup.sql
Pitt
3
Em vez de usar >para salvar, prefiro usá-lo -rpara evitar problemas com caracteres estrangeiros ou o pesadelo referente a problemas de codificação, conforme declarado neste artigo .
Pathros 07/02
1
Para bancos de dados grandes / atualizados ativamente, use o parâmetro --single-transaction. Isso cria um ponto de verificação e ajuda a garantir consistência. Além disso, o uso muda --routines --triggers, se você armazenou procedimentos / funções / triggers
accord_guy
1
Você deve usar em --result-file=db_backup.sqlvez de > db_backup.sql. Cite a documentação do MySQL : "O UTF-16 não é permitido como um conjunto de caracteres de conexão (consulte Conjuntos de caracteres de cliente não permitidos ), para que o arquivo de despejo não seja carregado corretamente. Para contornar esse problema, use a --result-fileopção que cria a saída em Formato ASCII ".
Martin Braun
13

Nas versões mais recentes do mysql, pelo menos na minha, você não pode colocar seu passe diretamente no comando.

Você precisa executar:

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

e depois solicitará a senha.

Lorenzo Lerate
fonte
2
removendo o espaço entre a -popção e real senha faz o truque
y2k-shubham
8

Se estiver baixando do servidor remoto, aqui está um exemplo simples:

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

O -p indica que você digitará uma senha, não relacionada ao nome do db. Depois de inserir o comando, você será solicitado a fornecer a senha. Digite e pressione enter.

Andrew
fonte
5

No Windows, você precisa especificar a caixa do mysql onde reside o mysqldump.exe.

cd C:\xampp\mysql\bin

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

salve isso em um arquivo de texto como backup.cmd

drooh
fonte
ou normalmente tendo o mysql na sua variável PATH para que você possa executar mysqlcomandos de qualquer lugar sem estar no diretório.
precisa saber é
2

Abra o prompt de comando e digite diretamente este comando. Não entre no mysql e digite este comando.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
fonte
1
Copiar a primeira linha de código da resposta aceita em uma pergunta de 5 anos é uma estratégia ousada para o cultivo de carma.
Phillip Copley
Eu tentei este comando MySQLdump dentro do prompt do Mysql e não funcionou. por isso só respondeu :-)
Nithin Raja
2

Vá para o diretório de instalação do MySQL e abra o cmd a partir daí. Em seguida, execute o comando abaixo para obter um backup do seu banco de dados.

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

Basta digitar mysqldumpou mysqldump --helpno seu cmd será exibidohow to use

Aqui está o meu resultado cmd

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
fonte
1

Se você estiver executando o MySQL diferente da porta padrão:

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

Para quem deseja digitar a senha na linha de comando. É possível, mas é recomendável passá-lo entre aspas para que o caractere especial não cause nenhum problema.

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

Use this Se você possui o banco de dados com o nome archiedb, use este mysql -p --databases archiedb> /home/database_backup.sql

Supondo que isso seja Linux, escolha onde o arquivo de backup será salvo.

Nabaasa Archie
fonte
shell> mysqldump -p minha senha - bancos de dados mydb> /home/backup.sql.
Nabaasa Archie 16/05/19
-1

Para usuários do Windows, você pode ir para a pasta mysql para executar o comando

por exemplo

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P
fonte
1
A pergunta sugeriu que o MySQL está sendo executado no Linux.
precisa saber é
-1

Nota: Esta etapa ocorre somente após o descarte do arquivo MySQL (que a maioria das respostas acima abordou).

Ele pressupõe que você tenha o referido arquivo de despejo no servidor remoto e agora deseja baixá-lo no computador local.

Para baixar o .sqlarquivo despejado do servidor remoto para o computador local, faça

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