Autor Tópico: Cliente MySql e elaboração de relatórios em vários hosts  (Lida 272 vezes)

Offline Cão

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Cliente MySql e elaboração de relatórios em vários hosts
« Online: 24 de Fevereiro de 2017, 08:58 »
 Olá,

No meu estágio, venho tendo a tarefa de limpar várias tabela, em várias bases de vários hosts(27... um pra cada estado brasileiro).
Gostaria então de um guia simples para conexão do meu cliente mysql à essas diversas bases, via terminal.

Digo via terminal, pela facilidade de elaborar scripts e macros que resumam esse trabalho, e caso alguém conheça uma ferramenta gráfica com
essas funções, seria legal também.

Grato desde já,
 

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.013
    • Ver perfil
    • Alexsandro Felix
Re:Cliente MySql e elaboração de relatórios em vários hosts
« Resposta #1 Online: 24 de Fevereiro de 2017, 09:08 »
Basicamente, o comando para conexão a bancos mysql pelo terminal é:

Código: [Selecionar]
mysql -h HOST -u USUARIO -p SENHA -D BANCODEDADOS

Offline Cão

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Re:Cliente MySql e elaboração de relatórios em vários hosts
« Resposta #2 Online: 25 de Fevereiro de 2017, 14:33 »
Vlw cara.
Sua resposta me deu um norte.

Offline Cão

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Re:Cliente MySql e elaboração de relatórios em vários hosts
« Resposta #3 Online: 25 de Fevereiro de 2017, 15:00 »
No fim eu consegui montar o script dessa forma:


#!/bin/bash

select="SELECT *
                FROM tbl;"  # SELECT feito para o backup

update="UPDATE tbl
                  SET col = val
                  WHERE col1 = val1;" # update

while read linha; do    # Este laço lê um arquivo csv com os nomes dos hosts, portas, usuarios e senhas nas 1ª, 2ª,3ª e 4ª colunas respectivamente
  host=$( echo "$linha" | cut -f1 -d' ' )
  porta=$( echo "$porta" | cut -f2 -d' ' ) # Aqui os dados para acesso às bases estão sendo armazenadas em variáveis
  usuario=$( echo "$linha" | cut -f3 -d' ' )
  senha=$( echo "$senha" | cut -f4 -d' ' )

mysql -h$host -P$porta -u$usuario -p$senha -e"SHOW DATABASES;" > bases_do_host.txt   # Para cada host, serão feitos relatórios e updates em cada banco de dados presente, este comando cria um arquivo com cada banco armazenado em uma linha

  while read base; do # Loop feito em cada BD
    mysql -h$host -P$porta -u$usuario -p$senha -e"$select" >> Backup.txt  # Geração de um arquivo de backup, antes que sejam feitos updates
    mysql -h$host -P$porta -u$usuario -p$senha -e"$update"  # update
  done <bases_do_host.txt

done <lista_hosts-portas-usuarios-e-senhas.txt