Quando eu tentei executar o seguinte comando no MySQL de dentro do Terminal:
mysql -u $user -p$password -e "statement"
A execução funciona como esperado, mas emite sempre um aviso:
Aviso: Usar uma senha na interface de linha de comando pode ser inseguro.
Entretanto, eu tenho que conduzir a declaração acima usando uma variável de ambiente ($password
) que armazena minha senha, porque eu quero rodar o comando iterativamente em script bash de dentro do Terminal, e eu definitivamente não'não gosto da idéia de esperar que um prompt apareça e me force a inserir minha senha 50 ou 100 vezes em um único script. Então aqui'é a minha pergunta:
É possível suprimir o aviso? O comando funciona corretamente como eu disse, mas a janela fica bastante bagunçada quando eu faço loop over e executo o comando 50 ou 100 vezes.
Devo obedecer à mensagem de aviso e NÃO escrever a minha senha no meu script? Se esse'é o caso, então eu tenho que digitar minha senha toda vez que o prompt me obriga a fazer isso?
Executando man mysql
doesn't help, dizendo apenas
`---show-warnings' Porque os avisos devem ser mostrados após cada declaração, se houver alguma. Esta opção aplica-se ao modo interativo e em lote.
e não menciona nada sobre como desligar a funcionalidade, se I'não estou a perder nada.
I'm no OS X 10.9.1 Mavericks e usar MySQL 5.6 a partir de homebrew.
Se a sua versão cliente/servidor MySQL é uma versão 5.6.x uma forma de evitar a mensagem de ADVERTÊNCIA está usando as ferramentas mysql_config_editor:
mysql_config_editor set --login-path=local --host=localhost --user=username --password
Então você pode usar em seu script shell:
mysql --login-path=local -e "statement"
Em vez de:
mysql -u username -p pass -e "statement"
Você também pode executar o mysql_config_editor no seu script para passar na senha ao especificar o caminho de login
expect -c "
spawn mysql_config_editor set --login-path=$mySqlUser --host=localhost --user=$mySqlUser --password
expect -nocase \"Enter password:\" {send \"$mySqlPassword\r\"; interact}
"
Isto inicia uma sessão de espera que pode ser usada em scripts para interagir com os prompts