[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Res: [shell-script] Integração
From: |
MrBiTS |
Subject: |
Re: Res: [shell-script] Integração |
Date: |
Wed, 20 Feb 2008 06:56:07 -0300 |
User-agent: |
Thunderbird 2.0.0.6 (X11/20071022) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
| uma vez fiz um script que instala o qmail e utilizei o seguinte comando
| para executar SQLs da vida, segue exemplo
| RESULTADO=`echo "SELECT * FROM tabela WHERE campo=valor" | mysql -uroot
| -psenhadomysql`
| ai pra conferir da um
| echo $RESULTADO
A lista mesmo contém várias mensagens falando sobre isso.
No caso do exemplo acima, tenho comentários e uma correção:
- - correção
mysql -uusuario -psenhadousuario database
O cliente mysql exige que o nome do database seja enviado a ele quando uma
query vai ser executada
- - comentários:
O cliente mysql possui uma opção -e que serve para enviar uma query ao servidor
mysql. Então, seu exemplo, corretamente grafado,
poderia ficar assim:
mysql -uusuario -psenha -e "SELECT * FROM tabela WHERE campo=valor" database
Há uma caracteristica que pode atrapalhar nosso script. A primeira linha do
retorno desse comando será um cabeçalho contendo o nome
dos campos. Isso pode fazer nosso script comportar-se mal. Imagine que lemos o
resultado dessa query em um laço e, num determinado
momento, utilizamos expr para fazer um cálculo. Se passamos um parâmetro não
numérico para o expr, ele vai gerar um erro e pode
parar nosso script. Para removê-la
mysql -uusuario -psenha -N -e "SELECT * FROM tabela WHERE campo=valor" database
O outro comentário é sobre escrever-se usuário e senha do banco de dados em um
script plain text. Eu contorno esse problema com um
arquivo ~/.my.cnf contendo:
[mysql]
user=usuario
password=senha
O cliente mysql vai lê-lo e o comando poderá ficar assim:
mysql -N -e "SELECT * FROM tabela WHERE campo=valor" database
Desde que esse arquivo ~/.my.cnf esteja devidamente protegido, você não terá
problemas com senhas.
O ultimo comentário é sobre escrever a senha de administrador do banco de dados
em plain text ! A regra de não acessar seu ambiente
unix como usuário root vale para bancos de dados também. Tenho boas histórias
de scripts e programas que acessavam MySQL como
usuario root, deixando a senha em plain text e, vejam que legal, era a mesma
senha do usuário root do servidor.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHu/k3rDdxWm3R8YYRAlhFAJ9m0MO2DrUmk9MTLzJW8y/xwRNRtACffmVS
OR+zMV4cj3Jqd03zg2bB5cE=
=oaUO
-----END PGP SIGNATURE-----