MariaDB/MySQL – Comandos básicos no terminal Linux
MariaDB é um SGBD (Sistema Gerenciador de Banco de Dados) que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua respectiva aquisição pela Oracle.
As etapas aqui mostradas foram feitas em um computador com Ubuntu 20.04 instalado e com o MariaDB devidamente instalado e configurado.
Para executar os comandos abaixo, é necessário estar no terminal de sua distribuição Linux.
Faça login no seu servidor de base de dados MariaDB com o usuário root de seu SGBD. Após o comando deve-se informar a respectiva senha do usuário:
sudo mysql -u root -p
Parâmetro -u: Indica o usuário ao qual desejamos utilizar para conectar ao SGBD.
Parâmetro root: Nome do usuário que estamos utilizando para realizar a conexão com o SGBD. Onde pode ser qualquer usuário cadastrado no MariaDB.
Parâmetro -p: Indica a senha do usuário para conexão com o SGBD.
Após informar a senha, você deve estar no console MariaDB:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 128
Server version: 10.3.32-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Estando no console, podemos utilizar os comando SQL. Veremos a seguir alguns exemplos:
Listar todas as bases de dados:
show databases;
Apagar uma base de dados:
drop database [nomeDB];
Criar uma base de dados:
create database [nomeDB];
É possível também criar base de dados já com os respectivos “conjunto e coleção de caracteres”, como mostrado a seguir:
create database [nomeDB] CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci;
Criar um usuário de base de dados:
CREATE USER ‘[usuarioDB]’@’localhost’ IDENTIFIED BY ‘[senhaUsuarioDB]’;
Neste ponto, o usuário recém criado, não possui permissões para fazer nada com as base de dados, portanto, deve-se fornecer ao usuário o acesso às informações que eles irão precisar.
GRANT [tipoPermissao] ON [nomeDB].[nomeTabela] TO ‘[usuarioDB]’@’localhost’;
O sinal “*” é um coringa, pois permite selecionar todos os itens. No exemplo a seguir, mostramos como um usuário tem acesso completo a todas as tabelas em uma respectiva base de dados:
GRANT ALL PRIVILEGES on [nomeDB].* to ‘[usuarioDB]’@’localhost’ identified by ‘[senhaUsuarioDB’;
Depois de finalizar com as permissões, sempre se certifique de recarregar todos os privilégios e suas alterações estarão em vigor.:
flush privileges;
Segue uma lista de permissões comuns das quais os usuários podem usufruir:
ALL PRIVILEGES: Garante ao usuário do SGBD acesso completo a respectiva base de dados (ou, se nenhuma base for selecionada, acesso global ao sistema)
CREATE: Permite criar novas tabelas ou base de dados
DROP: Permite deletar tabelas ou base de dados
DELETE: Permite excluir linhas de tabelas
INSERT: Permite inserir linhas em tabelas
SELECT: Permite usar o comando SELECT para ler os base de dados
UPDATE: Permite atualizar linhas de tabelas
GRANT OPTION: Permite conceder ou remover privilégios de outros usuários
Alternar para uma base de dados:
use [nomedb];
Mostrar todas as tabelas da respectiva base de dados:
show tables;
Mostrar o formatos dos campos da tabela de uma base de dados:
describe [nomeTabela];
Apagar uma tabela:
drop table [nomeTabela];
Para sair da interface de administração do MariaDB:
exit
CHARSETS E COLLATIONS NO MYSQL
Charsets
Os campos do tipo texto do MariaDB (e outros SGBDs), como char, varchar, text, entre oitros, tem uma propriedade que definem o conjunto de caracteres válidos naquele campo. Esses são os chamados “character sets” ou, de forma abreviada, “charsets”. Há charsets pra vários idiomas. O mais usado com o português é o “UTF-8”, que inclui todos os nossos caracteres acentuados. Porém o “utf8” permite um byte a mais na codificação é o bastante recomendado ultimamente.
Para mostrar a lista de charsets suportados pelo MariaDB, faça a seguinte consulta:
show character set;
Collations
Existem também as “collations” (que podem ser traduzidas por “coleções” ou “agrupamentos”) para cada um desses charsets. Elas definem as regras para comparação entre caracteres do charset. Há collations para comparar caracteres de diferentes idiomas, para ignorar (ou não) letras minúsculas e maiúculas, ou acentuação.
Por exemplo, digamos que seja feita uma consulta pela palavra “teste” em uma determinada coluna de uma tabela. Se a collation dessa coluna for “utf8mb4_unicode_ci”, o MariaDB pode retornar as palavras “TESTE”, “Teste”, etc., pois as letras maiúsculas não se diferem das minúsculas (daí o sufixo “ci”, de “case-insensitive”). Já na collation “utf8mb4_general_cs”, apenas o valor “teste” serviria.
Para mostrar a lista de collations de um determinado charset, use:
show collation where charset=’utf8′;
Unicode e UTF-8
O conjunto de caracteres Unicode é o mais abrangente. Ele engloba milhares de caracteres conhecidos, de vários idiomas, além de símbolos, emoticons, etc. Já o UTF-8 é uma forma prática de se usar o Unicode sem usar tanto espaço de armazenamento.
A tendência atualmente é usar o charset UTF-8 nos base de dados (especificamente o utf8 no MariaDB), pois serve para qualquer idioma.
utf8
O UTF-8 do MariaDB, por padrão, não suporta todos os caracteres possíveis do Unicode, utilizando até 3 bytes por caractere. Eles posteriormente criaram o charset utf8, que pode ter até 4 bytes por caractere e é mais completo.
Então a recomendação mais atual de charset e collation para campos texto é utf8 e utf8mb4_unicode_ci, respectivamente.