Criar usuário no MySQL e conceder permissões

Neste post vou mostrar como criar usuários no MySQL e conceder permissões ao usuário para acessar um banco de dados específico ou todos

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Banco de Dados - TUTORIAL

Última atualização em: | 67636 Visualizações

O MySQL permite trabalhar vários quesitos de segurança, e na minha opinião pessoal, o primeiro é a organização dos usuários versus acessos.

Uma regra muito importante, é nunca liberar o usuário root/root para acessar o servidor de qualquer local, para isso neste tutorial vou mostrar como criar usuários no MySQL e conceder permissões específicas ao usuário.

Acessar o MySQL

Antes de mais nada, precisamos acessar o MySQL, para isso abra o terminal ou o cmd no caso do windows e digite:

mysql -u root -p

Tecle enter e informe a senha. Após digitar a senha tecle enter novamente para acessar o MySQL.

Criando novo usuário no MySQL

A primeira coisa que devemos fazer é criar um usuário juntamente com sua senha de acesso.

Note que utilizaremos apenas comandos e não uma ferramenta em si.

No exemplo, criaremos um usuário chamado wolmir com a senha w123. O comando que permite criar o usuário no MySQL é:

CREATE USER 'wolmir'@'localhost' IDENTIFIED BY 'w123';

Note que sua senha deve ser mais complexa para dar mais segurança ao seu acesso, principalmente em caso de permissão de acesso a partir de qualquer local.

Neste comando, será criado o usuário wolmir e este poderá acessar o MySQL a partir da máquina local, ou seja, localhost. Se quiser permitir acesso a partir de qualquer ip, pode usar o comando:

CREATE USER 'wolmir'@'%' IDENTIFIED BY 'w123';

Conceder permissão a usuário no MySQL

Após criar um usuário, ainda é necessário conceder permissões de acesso. As permissões podem restringir o acesso a um banco de dados específica ou ainda atribuir apenas alguns privilégios.

Primeiro vou mostrar como conceder acesso a um banco de dados específico. Para isso criaremos o banco de dados teste.

create database teste;

Após criar o banco de dados, podemos atribuir as permissões ao usuário wolmir. O comando utilizado é:

GRANT ALL PRIVILEGES ON teste.* TO 'wolmir'@'localhost';

A palavra reservada ALL atribui todos os privilégios ao banco de dados teste para o usuário wolmir a partir dolocalhost.

Para entender melhor o comando GRANT veja o que se refere cada parte do comando:

GRANT <tipo de permissão> ON <nome da base de dados>.<nome da tabela> TO '<nome do usuário>'@'localhost';

Entendido o comando podemos observar que:

  • Caso queira dar acesso a todos os bancos de dados para o usuário pode usar * em <nome da base de dados> ou apenas o nome de um banco de dados como foi o caso do exemplo acima.
  • Caso queira dar acesso a apenas uma tabela do banco de dados em questão, pode adicionar o nome da tabela em <nome da tabela> ou * para todas as tabelas.
  • E por último, caso queira dar uma permissão específica para o usuário pode informar em <tipo de permissão> ou usar a palavra ALL PRIVILEGES para conceder todas as permissões.

Principais tipos de permissões

Para o campo <tipo de permissão> elencamos as principais que pode utilizar para conceder acesso:

PrivilégioExplicação
ALL PRIVILEGESdá a um usuário do MySQL todo o acesso a uma determinada base de dados (ou se nenhuma base de dados for selecionada, todo o sistema)
DELETEpermite deletar linhas das tabelas
INSERTpermite inserir linhas nas tabelas
SELECTpermite utilizar o comando select para ler bases de dados
UPDATEpermite atualizar linhas das tabelas
CREATEpermite criar novas tabelas ou bases de dados
DROPpermite deletar tabelas ou bases de dados
GRANT OPTIONpermite conceder ou revogar privilégios de outros usuários

Recarregar todos os privilégios

Após criar usuários ou conceder permissões, precisa recarregar todos os privilégios ao MySQL. Para isso use o comando:

FLUSH PRIVILEGES;

Criar usuário e conceder permissões no MySQL

Também é possível criar o usuário e conceder permissões apenas em um comando no MySQL. Para isso use o comando:

GRANT ALL ON <NomeDoBancoDeDados>.* TO '<NomeDoUsuario>'@'%' IDENTIFIED BY '<SenhaDoUsuario>' WITH GRANT OPTION;

Lembre-se de alterar as variáveis que estão entre <> no comando.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!