Como você está usando o Ubuntu, tudo o que você precisa fazer é adicionar um arquivo no diretório inicial e ele desativará a solicitação de senha do mysqldump. Isso é feito criando o arquivo ~/.my.cnf
(as permissões precisam ser 600).
Adicione isso ao arquivo .my.cnf
[mysqldump]
user=mysqluser
password=secret
Isso permite que você se conecte como um usuário MySQL que requer uma senha sem ter que realmente digitar a senha. Você nem precisa da senha -p ou --password.
Muito útil para scripts de comandos mysql e mysqldump.
As etapas para conseguir isso podem ser encontradas neste link .
Como alternativa, você pode usar o seguinte comando:
mysqldump -u [user name] -p[password] [database name] > [dump file]
mas lembre-se de que ele é inerentemente inseguro, pois o comando inteiro (incluindo senha) pode ser visualizado por qualquer outro usuário no sistema enquanto o dump estiver em execução, com um ps ax
comando simples .
--defaults-file
. Como `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Consulte stackoverflow.com/a/14653239/470749 . O MySql esperava que o meu estivesse emc:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Então, eu criei um arquivo lá. Reiniciar o Mysql não era necessário; funcionou imediatamente para o meu próximo mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Adicionando à resposta da @ Frankline:
A
-p
opção deve ser excluída do comando para usar a senha no arquivo de configuração.Corrigir:
mysqldump –u my_username my_db > my_db.sql
Errado:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
pode omitir o nome de usuário.Se o seu
.my.cnf
arquivo não estiver em um local padrão emysqldump
não o vir, especifique-o usando--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
fonte
Algumas respostas mencionam colocar a senha em um arquivo de configuração.
Como alternativa, no seu script, você pode
export MYSQL_PWD=yourverysecretpassword
.A vantagem desse método em relação ao uso de um arquivo de configuração é que você não precisa de um arquivo de configuração separado para manter a sincronização com seu script. Você só tem o script para manter.
Não há desvantagem nesse método.
A senha não é visível para outros usuários no sistema (seria visível se estiver na linha de comando). As variáveis de ambiente são visíveis apenas para o usuário que executa o comando mysql e root.
A senha também estará visível para qualquer pessoa que possa ler o próprio script, portanto, verifique se o próprio script está protegido. Isso não é diferente de proteger um arquivo de configuração. Você ainda pode obter a senha de um arquivo separado se desejar que o script possa ser lido publicamente (
export MYSQL_PWD=$(cat /root/mysql_password)
por exemplo). Ainda é mais fácil exportar uma variável do que criar um arquivo de configuração.Por exemplo,
fonte
export MYSQL_PWD=...
que não aparecem na lista de processos. Nem mesmo por uma fração de segundo. Isso ocorre porque oexport
comando é (e deve ser) um shell embutido. Portanto, o shell não bifurca / executa um processo com o argumento do comando se você o executar no seu shell.Para usar um arquivo que esteja em qualquer lugar dentro do sistema operacional, use,
--defaults-extra-file
por exemplo:Nota:
.sqlpwd
é apenas um exemplo de nome de arquivo. Você pode usar o que quiser.Nota: O MySQL irá verificar automaticamente
~/.my.cnf
qual pode ser usado em vez de--defaults-extra-file
Se você estiver usando o CRON como eu, tente isso!
Permissão necessária e propriedade recomendada
.sqlpwd
conteúdo:Outros exemplos para passar
.cnf
ou.sqlpwd
Se você deseja efetuar login automaticamente em um banco de dados, precisará da
[mysql]
entrada, por exemplo.Agora você pode criar um alias que o conecta automaticamente ao banco de dados
Você também pode inserir a senha apenas
.sqlpwd
e passar o nome de usuário através do script / cli. Não tenho certeza se isso melhoraria a segurança ou não, isso seria uma pergunta totalmente diferente.Para garantir a integridade, declararei que você pode fazer o seguinte, mas é extremamente inseguro e nunca deve ser usado em um ambiente de produção:
Nota: NÃO HÁ ESPAÇO entre -p e a senha.
Por exemplo,
-pPassWord
está correto enquanto-p Password
está incorreto.fonte
Sim, é muito fácil .... apenas em uma linha de comando mágica não mais
E feito :)
fonte
Para mim, usando o MariaDB, tive que fazer o seguinte: Adicione o arquivo
~/.my.cnf
e altere as permissões fazendo issochmod 600 ~/.my.cnf
. Em seguida, adicione suas credenciais ao arquivo. A parte mágica que estava faltando era que a senha precisava estar no bloco do cliente (ref: docs ), assim:Se você vier aqui procurando como fazer um mysqldump com o MariaDB. Coloque a senha em um bloco [client] e, em seguida, o usuário em um bloco [mysqldump].
fonte
[mysqldump]
seção e funcionou sem problemas. Ubuntu 18.04 LTSAqui está uma solução para o Docker em um script / bin / sh:
Substitua
[MYSQL_CONTAINER_NAME]
e verifique se a variável de ambienteMYSQL_ROOT_PASSWORD
está definida no seu contêiner.Espero que ajude você como se pudesse me ajudar!
fonte
Eu tenho o seguinte.
/ etc / mysqlpwd
Com o seguinte alias.
Para fazer uma restauração, basta usar:
fonte
what about --password = "" funcionou para mim rodando no 5.1.51
fonte
--password=xxx
na linha de comando tornará a senha visível para qualquer pessoa com capacidade de ler proc (ou fazer ps completo) - o que é bastante padrão.Definitivamente, acho que seria melhor e mais seguro colocar a linha cmd completa no crontab raiz, com credentails. Pelo menos a edição do crontab é restrita (legível) a alguém que já conhece a senha. Portanto, não se preocupe em mostrá-la em texto simples ...
Se necessário, mais do que um simples mysqldump ... basta colocar um script bash que aceite credentails como parâmetros e execute todas as comodidades dentro ...
O arquivo bas em simples
No Crontab:
fonte
Você pode especificar a senha na linha de comandos da seguinte maneira:
As opções para o mysqldump diferenciam maiúsculas de minúsculas!
fonte
mysqldump -u root -pmypassword