Como listar bancos, tabelas e indices no MySQL cli?

Comandos básicos do MySQL cli para conectar em um servidor, listar os bancos, tabelas e indices.

Como listar bancos, tabelas e indices no MySQL cli?
TL;DR ↪ Se você precisar apenas dos comandos, clique aqui para rolar a página direto para o resumo TL;DR!

📖 Índice

Esse é um artigo básico sobre os primeiros comandos do MySQL.

Se você está utilizando o MySQL cli, esses são os comandos para conectar no server, listar os bancos de dados, tabelas e campos.

Como se conectar ao MySQL via cli?

Se você precisar se conectar em um server local, utilize o comando abaixo:

mysql -u root -p

Caso precise se conectar em um server remoto, utilize o comando:

mysql -u root -h 200ok.com.br -p

Lembre-se que, para que um servidor remoto aceite conexões externas, você precisa que a porta 3306 esteja liberada no firewall e que o parâmetro bind-address esteja aceitando o ip do host remoto.

Como identificar a versão no MySQL instalada?

Para listar a versão atual do MySQL instalada, utilize o comando:

mysql -V

#Output
Ver 8.0.30-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

Como listar os bancos de dados MySQL via cli?

Para listar todas as bases de dados de um servidor MySQL via client, execute o seguinte comando dentro do mysql cli:

SHOW DATABASES;

#Output exemplo
+--------------------------+
| Database                 |
+--------------------------+
| db01_prod                |
| db02proj_prod            |
| information_schema       |
| mysql                    |
| performance_schema       |
| sys                      |
+--------------------------+
9 rows in set (0.00 sec)
Listar todas as bases de dados de um servidor MySQL

Como trocar de banco de dados MySQL via cli?

Para trocar de banco de dados MySQL via client em um servidor, execute o seguinte comando dentro do mysql cli:

USE nome_banco;
Usar o banco db1_prod

Como listar as tabelas de um banco de dados MySQL via cli?

Para listar todas as tabelas de um banco de dados MySQL via client, execute o seguinte comando dentro do mysql cli:

SHOW TABLES;

#Output exemplo
+----------------------------------------+
| Tables_in_db01_prod                    |
+----------------------------------------+
| actions                                |
| api_keys                               |
| users                                  |
| webhooks                               |
+----------------------------------------+
4 rows in set (0.05 sec)
Listagem de tabelas do banco db1_prod

Como listar as os campos de uma tabela MySQL via cli?

Para listar todos os campos e detalhes de uma tabela de um banco de dados MySQL via client, execute o seguinte comando dentro do mysql cli:

DESCRIBE nome_tabela;

#Output de exemplo
+-----------------------+---------------+------+-----+---------+-------+
| Field                 | Type          | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| id                    | varchar(24)   | NO   | PRI | NULL    |       |
| event                 | varchar(50)   | NO   |     | NULL    |       |
+-----------------------+---------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Detalhes da tabela users do banco db1_prod

Como listar os indices de uma tabela MySQL via cli?

Para listar todos os indices de uma tabela de um banco de dados MySQL via client, execute o seguinte comando dentro do mysql cli:

SHOW INDEXES FROM nome_tabela;

#Output exemplo
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name           | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| users |          0 | PRIMARY            |            1 | id          | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| users |          0 | users_slug_unique  |            1 | slug        | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| users |          0 | users_email_unique |            1 | email       | A         |           2 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
3 rows in set (0.00 sec)
Listagem de indices da tabela users

Outras formas de listar os indices de uma tabela são:

SHOW INDEXES FROM nome_tabela; 

SHOW INDEX IN nome_tabela;

SHOW KEYS FROM nome_tabela;
Múltiplas formas de exibir os indices de uma tabela no MySQL via cli

TL;DR | Resumo

# Conectar em um servidor MySQL local
mysql -u root -p

# Conectar em um servidor MySQL remoto
mysql -u root -h 200ok.com.br -p

# Listar versão corrent do MySQL
mysql -V

# Dentro do MySQL CLI mysql>
# Listar todos os bancos
SHOW DATABASES;

# Conectar em um banco de dados
USE nome_banco;

# Listar tabelas de do banco corrente
SHOW TABLES;

# Listar campos e detalhes de uma tabela
DESCRIBE nome_tabela;

# Listar indices de uma tabela
SHOW INDEXES FROM nome_tabela;

🟢 Obrigado pela leitura!