Certas ocasiões, precisamos no SHELL, de dados do inseridos em bases MySQL, pra usar em shellscripts, por exemplo. Fácil…
Em primeiro, você deve ter um login e senha para acessar o banco. Veja, nunca use root, a não ser que você seja superhiperpowerultramegajaspionninja, como eu (huahuahua, desculpe, não consegui perder a piada…). Agora sério, um comando fora de órbita pode danificar seu banco e claro que seu backup está atualizado, então, não dá nada usar root (super sarcástico… hehehe).
Vamos testar se em seu shell você acessa o banco. Não entrarei aqui em políticas de segurança do banco, do S.O.R., etc…
# mysql basededados -h sgdb.meudomínio.com.br -u usuario -p
O -p
fará o banco pedir sua senha. Não aparecerá nada na digitação, portanto, preste atenção.
OK, entrou, já faz uma clássica pra testar: SELECT * FROM usuarios LIMIT 10;
Então, foi? Volta pro shell…
Pra enviar este comando para o MySQL através do shell, agente vai usar umas paradinhas que só o Linux faz pra você…
Se você precisa rodar esta consulta que já fizemos, por exemplo, proceda assim:
# echo "SELECT * FROM usuarios LIMIT 10;" | mysql basededados -h sgdb.meudomínio.com.br -u usuario -p
Vou explicar… Muito simples Chumchum… Estou pegando a saída de um comando e jogando na entrada de outro. O “|” faz isso… Mandei o shell escrever (echo blablabla), em vez da tela, na entrada do comando “mysql blablabla”. Com isso, roda e traz pra você no shell a resposta.
Agora pensemos… E se for um script grande… Não dá pra ficar escrevendo no echo, copiar, colar, etc…
Vamos usar do mesmo jeito, mas de jeito diferente… Só o Linux faz isso pra você… huahauahua
Gravo um arquivo (arquivo.sql) com todas os meus comandos em SQL, com “;” e tudo mais…
Depois uso isso:
# mysql basededados -h sgdb.meudomínio.com.br -u usuario -p < arquivo.sql
Outra forma:
# cat arquivo.sql | mysql basededados -h sgdb.meudomínio.com.br -u usuario -p
Na verdade, a entrada pode ser qualquer saída de qualquer comando, script, programa que forneça um SQL no padrão do esperado pelo MySQL.
Assim carregará e executará os sqls do arquivo arquivo.sql.
Tá feito...
"- Mas tio, preciso guardar a resposta em um arquivo."
Simples pequeno pupilo...
# mysql basededados -h sgdb.meudomínio.com.br -u usuario -p > arquivo.saida < arquivo.sql
ou
# cat arquivo.sql | mysql basededados -h sgdb.meudomínio.com.br -u usuario -p > arquivo.saida
Acho que é isso... Estamos aí...
Uma contribuição de 0,02 centavos a seu post:
Usando PIPES(|) geramos uma subsshell, o que no caso do mysql nao é ncessário, veja:
mysql -u root -p”senha” BASE_DADOS -e “select * from tabela;”
Funciona lindamente!!! A senha eu coloquei só pra exemplo.
Att
Ernander
Salve Ernander…
O objetivo deste post é informar que podemos sempre fazer mais no shell.
A saída de qualquer comando, script ou seja lá o que for pode ser direcionada ao MySQL, claro, desde que esteja dentro dos padrões de recebimento do mesmo.
Mas agradeço à sua contribuição… abs