MySQL Criando banco de dados e liberando acesso para usuário

cd /mariadb/bin
mysql -u root -p

CREATE DATABASE mydb;
GRANT ALL ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;

quit

Atualmente é muito comum que os desenvolvedores necessitem lidar com uma infinidade de tecnologias dentre elas instalação e configuração de banco de dados.

Até aqui tudo bem, só que não… o mais corriqueiro é que depois de instalarmos o MySQL passemos a utilizar a conexão com o usuário root e pior, sem senha.

E quem já não tentou liberar o acesso para usuário com o PHPMYADMIN e acabou se frustando por que não funcionou corretamente?

Ao criar um novo banco de dados podemos imediatamente liberar o acesso para um usuário específico evitando assim o acesso com o infame root user.

Os comandos acima são praticamente intuitivos, vou apenas reforçar que a liberação foi feita para o usuário myuser provenientes do ambiente localhost, ou seja conexão interna.

Para liberar acesso mais genérico poderíamos utilizar um asterisco (*) no lugar de localhost, assim estaríamos liberando o acesso remoto a partir de outros hosts.

Agora você já sabe, nada de usar o usuário root sem senha.

MySQL Comparando colunas Case Insensitive diferenciando maiúsculas e minúsculas

SELECT *
FROM tabela_nome
WHERE (coluna_nome COLLATE latin1_general_cs) = 'TexTo';

O MySQL tem um recurso que acho muito show que é com muita facilidade configurar o recurso COLLATE CI (case insensitive) nas colunas texto, o que facilita muito a busca de informações pois não precisamos nos preocupar com maiúsculas e minúsculas no momento das pesquisas.

Mas se em algum momento por alguma razão precisamos fazer uma pesquisa fazendo distinção de maiúsculas e minúsculas?

Neste caso podemos utilizar o recurso COLLATE associando dinamicamente a coluna que queremos fazer a comparação do conteúdo.

Neste exemplo estamos claramente solicitando que o banco de dados faça a consulta comparando o conteúdo da coluna coluna_nome epsis litteris a string “TexTo” discriminando exatamente as maiúsculas e minúsculas.

Eu entendo que muitos profissionais preferem que o banco de dados tenha o comportamento CASE SENSITIVE nativamente como no caso do ORACLE e PostGre, mas o mundo web tem destas facilidades que o MySQL incorporou na gente.