shell-script-pt
[Top][All Lists]
Advanced

[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-----


reply via email to

[Prev in Thread] Current Thread [Next in Thread]