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
\?ouhelp: 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.\qouexit: Encerra a sessão interativa.