Rodar MySQL no SHELL

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í...

2 comentários em “Rodar MySQL no SHELL”

  1. 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

Os comentários estão encerrado.