MySQL consultas do arquivo bash

0

Gostaria de executar várias consultas do MySQL e salvá-las em arquivos especificados. As consultas são salvas em um script bash, queries.sh , por exemplo:

cat queries.sh
mysql -u <user> -p <DBname> -e "select Col1 from Table1 where Condition;" > /home/<user>/queries/Col1Table1Cond
mysql -u <user> -p <DBname> -e "select Col5 from Table2 where Condition;" > /home/<user>/queries/Col5Table2Cond

A execução do script não é suficiente, pois <user> precisa inserir sua senha em cada consulta e isso compromete o fluxo do script.

    
por dovah 25.09.2016 / 14:24

2 respostas

2

Tente isso;)

user="jonnDoe"
dbname="customers"
password="VerySecret"

mysql -u $user -D $dbname -p $password -e "select Col1 from Table1 where Condition;" > /home/$user/queries/Col1Table1Cond
mysql -u $user -D $dbname -p $password -e "select Col5 from Table2 where Condition;" > /home/$user/queries/Col5Table2Cond

Uma prática melhor é configurar o arquivo mysql /etc/mysql/my.cnf com a senha dentro, desta forma, não é necessário inseri-lo a cada vez:

[client]
password    = your_password

Neste último caso, remova todas as coisas relacionadas à senha do script anterior

    
por 25.09.2016 / 14:41
1

Geralmente, existem algumas maneiras diferentes de conseguir isso.

Armazene em um arquivo externo contendo apenas a senha:

$cat password.txt
Password

$cat queries.sh
mysql -u <user> -p$(cat password.txt) <rest of the command>

Armazene em outro script de shell:

$cat settings.sh
PASSWORD=Password

$cat queries.sh
source settings.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>

Armazene em uma variável de ambiente chamada PASSWORD:

$cat queries.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>

Veja também Como se autenticar automaticamente o mysql em shell scripts?

    
por 25.09.2016 / 14:48