Quando tentei executar o seguinte comando no MySQL a partir do Terminal:
mysql -u $user -p$password -e "statement"
A execução funciona conforme o esperado, mas sempre emite um aviso:
Aviso: O uso de uma senha na interface da linha de comandos pode ser inseguro.
No entanto, tenho que conduzir a declaração acima usando uma variável de ambiente ( $password
) que armazena minha senha, porque desejo executar o comando iterativamente no script bash a partir do Terminal e, definitivamente, não gosto da ideia de esperar um prompt aparecer e me forçando a inserir minha senha 50 ou 100 vezes em um único script. Então aqui está a minha pergunta:
É possível suprimir o aviso? O comando funciona corretamente como afirmei, mas a janela fica bastante bagunçada quando faço um loop e executo o comando 50 ou 100 vezes.
Devo obedecer à mensagem de aviso e NÃO escrevo minha senha no meu script? Se for esse o caso, tenho que digitar minha senha toda vez que o prompt me obriga a fazer isso?
Correr man mysql
não ajuda, dizendo apenas
--show-warnings
Faça com que os avisos sejam mostrados após cada instrução, se houver algum. Esta opção se aplica ao modo interativo e em lote.
e não menciona nada sobre como desativar a funcionalidade, se não estiver faltando alguma coisa.
Estou no OS X 10.9.1 Mavericks e uso o MySQL 5.6 do homebrew.
pexcept
. Ele pode fazer inserções de terminal e também lidar com o feedback que o comando fornece. Desta forma, você pode simplesmente ignorar que a saída detalhada e tira da saída real que você quer :)
[client]
password=my_password
em~/.my.cnf
). Certamente ele tem algumas implicações de segurança também, mas pelo menos não é acessível a qualquer um que pode executarps
, e você tem controle sobre ele com permissões de arquivo.