Operações Essenciais na Linha de Comando do MySQL

Conexão e Ajustes de Acesso

Para interagir com o servidor de banco de dados, utilize o cliente nativo. A sintaxe varia conforme o ambiente e a necessidade de definição de codificação.

# Acesso direto à instância local
mysql -u administrador -p

# Conexão com servidor remoto via IP
mysql -h 10.20.30.40 -u administrador -p

# Conexão remota com banco específico e codificação utf8mb4
mysql -h 10.20.30.40 -u administrador -p --default-character-set=utf8mb4 sistema_vendas

Para permitir conexões externas, edite o arquivo de configuração principal do serviço. O caminho pode variar conforme a distribuição e a versão (MySQL ou MariaDB).

# MySQL padrão: /etc/mysql/mysql.conf.d/mysqld.cnf
# MariaDB padrão: /etc/mysql/mariadb.conf.d/50-server.cnf

# Localize a diretiva bind-address e altere para:
bind-address = 0.0.0.0

Credenciais padrão podem ser armazenadas em um arquivo de configuração pessoal (~/.my.cnf) para evitar a repetição da senha em cada invocação:

[client]
user=operador_dev
password=Str0ng_P@ssw0rd!

Administração de Contas e Privilégios

A criação de perfis de acesso deve seguir o princípio do menor privilégio. Utilize a cláusula IDENTIFIED BY para definir senhas durante a geração do usuário.

-- Criação de conta restrita ao host local
CREATE USER 'app_backend'@'localhost' IDENTIFIED BY 'S3nhaSegura123';

-- Concede permissões completas apenas no banco indicado
GRANT ALL PRIVILEGES ON relatorios_diarios.* TO 'app_backend'@'localhost';

-- Atualiza a memória de permissões do servidor
FLUSH PRIVILEGES;

Para contas que necessitam de alcance global a partir de qualquer origem:

-- Usuário remoto com permissão de repassar privilégios (WITH GRANT OPTION)
GRANT ALL PRIVILEGES ON *.* TO 'supervisor_cloud'@'%' IDENTIFIED BY 'CloudAccess2024' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Verifique a identidade ativa na sessão corrente com:

SELECT CURRENT_USER();

Gerenciamento de Esquemas

As operações DDL básicas permitem listar, alternar, criar ou remover bancos de dados.

-- Lista todos os esquemas disponíveis
SHOW DATABASES;

-- Exibe o banco atualmente selecionado
SELECT DATABASE();

-- Alterna o contexto para o esquema desejado
USE sistema_vendas;

-- Criação com suporte a caracteres multibyte
CREATE DATABASE sistema_vendas DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Remoção definitiva do esquema e seus objetos
DROP DATABASE sistema_vendas;

Estruturação de Tabelas

Liste os objetos presentes no contexto ativo ou aponte para um esquema específico:

SHOW TABLES;
SHOW TABLES FROM sistema_vendas;

A definição de tabelas segue a sintaxe DDL padrão. O uso de IF NOT EXISTS previne erros em scripts idempotentes.

CREATE TABLE IF NOT EXISTS colaboradores (
  cod_funcionario INT UNSIGNED NOT NULL AUTO_INCREMENT,
  nome_completo VARCHAR(100) NOT NULL,
  email_corporativo VARCHAR(150) UNIQUE NOT NULL,
  nivel_acesso TINYINT UNSIGNED DEFAULT 2,
  dt_contratacao DATETIME NOT NULL,
  PRIMARY KEY (cod_funcionario),
  INDEX idx_email (email_corporativo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Alterações na estrutura são realizadas via ALTER TABLE. O posicionamento de colunas pode ser controlado com FIRST ou AFTER.

-- Adiciona coluna logo após a data de contratação
ALTER TABLE colaboradores ADD COLUMN dt_demissao DATE DEFAULT NULL AFTER dt_contratacao;

-- Insere coluna no início da estrutura
ALTER TABLE colaboradores ADD COLUMN matricula_externa VARCHAR(50) NOT NULL FIRST;

-- Remove coluna desnecessária
ALTER TABLE colaboradores DROP COLUMN matricula_externa;

-- Ajusta tipo e comportamento de uma coluna existente
ALTER TABLE colaboradores MODIFY COLUMN nivel_acesso INT NOT NULL DEFAULT 0;

Para descartar uma tabela inteira:

DROP TABLE colaboradores;

Manipulação de Dados (DML)

Inserção em lote otimiza a escrita no disco ao agrupar múltiplas tuplas em uma única instrução.

INSERT INTO colaboradores (nome_completo, email_corporativo, nivel_acesso, dt_contratacao) VALUES
  ('Ana Silva', 'ana.s@empresa.com', 3, '2023-01-15 09:00:00'),
  ('Carlos Souza', 'carlos.s@empresa.com', 1, '2023-02-20 14:30:00');

Consultas suportam filtros booleanos, ordenação e paginação.

-- Retorna todas as colunas
SELECT * FROM colaboradores;

-- Seleciona apenas campos específicos
SELECT nome_completo, nivel_acesso FROM colaboradores;

-- Filtro composto, ordenação decrescente e limite de registros
SELECT * FROM colaboradores WHERE nivel_acesso >= 2 AND YEAR(dt_contratacao) = 2023 ORDER BY cod_funcionario DESC LIMIT 5;

-- Lógica com agrupamento de condições
SELECT * FROM colaboradores WHERE (nivel_acesso = 3 AND dt_demissao IS NULL) OR (nivel_acesso = 1 AND YEAR(dt_contratacao) < 2022);

Atualizações e remoções requerem atenção à cláusula WHERE para evitar alterações massivas não intencionais.

-- Atualiza status de um registro específico
UPDATE colaboradores SET nivel_acesso = 4 WHERE email_corporativo = 'ana.s@empresa.com';

-- Limita a quantidade de linhas afetadas em uma operação em lote
UPDATE colaboradores SET nivel_acesso = 0 WHERE nivel_acesso = 1 LIMIT 50;

-- Remove registros inativos
DELETE FROM colaboradores WHERE dt_demissao IS NOT NULL;

-- Remove apenas um subconjunto seguro
DELETE FROM colaboradores WHERE nivel_acesso = 0 LIMIT 10;

Controle de Transações

Transações agrupam instruções em uma unidade atômica. O servidor garante que todas sejam aplicadas ou nenhuma seja.

START TRANSACTION;

-- Deduz quantidade do produto A
UPDATE estoque_produtos SET quantidade = quantidade - 10 WHERE sku = 'PROD-001';

-- Adiciona quantidade ao produto B (ex: kit montado)
UPDATE estoque_produtos SET quantidade = quantidade + 5 WHERE sku = 'KIT-002';

-- Confirma as alterações de forma permanente
COMMIT;

Em caso de falha ou validação negativa, utilize ROLLBACK; para reverter ao estado anterior. O isolamento das transações pode ser ajustado via SET TRANSACTION ISOLATION LEVEL.

Ferramentas de Administração Externa

O utilitário mysqladmin opera fora do shell interativo, sendo útil para automação.

mysqladmin -u root -p create banco_teste
mysqladmin -u root -p drop banco_teste
mysqladmin -u root -p password 'NovaSenhaForte'

Backup e Restauração via mysqldump

A exportação lógica gera um arquivo contendo instruções CREATE e INSERT.

# Gera snapshot do esquema completo
mysqldump -u root -p sistema_vendas > sistema_vendas_backup.sql

A recuperação exige a recriação do banco (se necessário) e a leitura do fluxo de dados.

mysqladmin -u root -p create sistema_vendas
mysql -u root -p sistema_vendas < sistema_vendas_backup.sql

Comandos Internos do Cliente

  • \? ou help: Exibe o guia de referência integrado.
  • \s: Apresenta status detalhado da conexão e do servidor.
  • USE nome_bd: Alterna o esquema ativo.
  • source caminho/arquivo.sql: Executa um script SQL externo no contexto atual.
  • \! comando_shell: Invoca utilitários do sistema operacional sem sair do prompt.
  • \q ou exit: Encerra a sessão interativa.

Tags: MySQL administracao-sql cliente-mysql mysqldump transacoes-acid

Publicado em 8-23 06:48