Tenho usado o comando "mysql" do console Unix há algum tempo. É mais conveniente para agendar tarefas ou iniciá-las sem supervisão.
O esboço de um script .sh para isso é:
#!/bin/bash
#DB Config
USR_BD=myUsr
PWD_BD=myPass
IP_BD=x.x.x.x
f_exec ()
{
echo `date` ' -> Executing sql file ' $1
mysql -h $IP_BD -u $USR_BD -p$PWD_BD my_schema < $1
echo `date` ' -> Executed sql file ' $1
}
f_exec my_sentences.sql
O problema é que passei por uma verificação de segurança e eles me disseram que não posso salvar a senha clara em uma variável ou em um arquivo de texto simples dentro de um script .sh
Minha pergunta é: como posso resolver esse problema?
- Se você puder salvar algo como um token, o token apresentará o mesmo problema que a senha.
- Se você der permissão para conectar sem senha ao host no qual eu executo o script, se você obtiver acesso a esse host, você também obterá acesso ao banco de dados.
Claro, é óbvio que não vou conectar às 3 da manhã para digitar a senha para executar o script. Ou esperar online por uma consulta pesada de 10 minutos.
Não sei como resolver a situação. Obrigado.
Agora o roteiro:
Agora uma invocação:
Somente iniciado pelo
root
seu script será capaz de incluirmypass.txt
corretamente e obter$MYSQLPASSWORD
variáveis visíveis. Usuários não privilegiados receberão um erro de permissão.