Às vezes, é necessário executar algumas consultas MySQL a partir da interface de linha de comando Linux sem acessar o prompt MySQL interativo.
Por exemplo, quando é necessário agendar um backup do banco de dados MySQL ou automatizar a execução de algumas consultas SQL com um script Bash.
Neste artigo mostrarei as opções mais úteis, do meu ponto de vista, do cliente da linha de comando MySQL e mostrarei como executar várias consultas SQL para um banco de dados a partir de um script Bash.
Dica legal: Liste os usuários do MySQL, suas senhas e privilégios concedidos a partir do prompt de linha de comando! Leia mais →
MySQL: execute consultas SQL do Linux Shell
Execute a consulta SQL a partir da linha de comando Linux:
$ mysql -u USER -pPASSWORD -e "SQL_QUERY"
-pPASSWORD: Isso não é um erro de digitação! Não deve haver um espaço entre sua senha e o -p quando você passá-la na linha de comando!
Execute a consulta SQL no banco de dados explicitamente especificado:
$ mysql -u USER -pPASSWORD -D DATABASE -e "SQL_QUERY"
Execute a consulta SQL no host explicitamente especificado:
$ mysql -u USER -pPASSWORD -h HOSTNAME -e "SQL_QUERY"
Supressão de títulos de coluna:
$ mysql -u USER -pPASSWORD -N -e "SQL_QUERY"
Suprimir fronteiras de tabela:
$ mysql -u USER -pPASSWORD -B -e "SQL_QUERY"
Salve a saída em um arquivo:
$ mysql -u USER -pPASSWORD -e "SQL_QUERY" > FILE
Dica legal: Crie um banco de dados MySQL e GRANT ALL PRIVILEGES a ele para um usuário! Tutorial MySQL simples e claro com bons exemplos! Leia mais →
As opções mySQL mais úteis ao executar consultas SQL a partir da linha de comando Linux ou de um script Bash:
| Opção | Descrição |
|---|---|
--user, -u | O nome de usuário MySQL para usar ao se conectar ao servidor. |
--password, -p | A senha a ser usada ao se conectar ao servidor. |
--database, -D | O banco de dados para usar. |
--host, -h | Conecte-se ao servidor MySQL no host dado. |
--skip-column-names, -N | Não escreva nomes de colunas em resultados. |
--batch, -B | Imprimir resultados usando a guia como separador de coluna, com cada linha em uma nova linha. |
MySQL: execute consultas SQL de um script bash
Para executar várias consultas SQL ou uma única consulta SQL multi-line eu uso o <<EOF...EOF.
A parte <<EOF diz à concha que vou entrar em várias linhas até a tag EOF.
Observe que aqui não deve haver espaços pouco antes da segunda tag EOF, caso contrário, será considerada como parte da consulta SQL.
A propósito, você pode renomear o EOF para qualquer coisa que quiser, por exemplo<<MY_QUERY...MY_QUERY.
Dica legal: Você tem um backup? Você deve tê-lo! Backup de bancos de dados MySQL da linha de comando! Isso é muito fácil! Leia mais →
Use a construção a seguir se você precisar executar várias consultas SQL a partir de um script Bash:
mysql -u USER -pPASSWORD <<EOF SQL_QUERY 1 SQL_QUERY 2 SQL_QUERY N EOF
Exemplo de script de bash:
#!/bin/bash mysql -u root -psecret <<MY_QUERY USE mysql SHOW tables MY_QUERY