À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