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
Última atualização em: | 69599 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 palavraALL 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égio | Explicação |
---|---|
ALL PRIVILEGES | dá 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) |
DELETE | permite deletar linhas das tabelas |
INSERT | permite inserir linhas nas tabelas |
SELECT | permite utilizar o comando select para ler bases de dados |
UPDATE | permite atualizar linhas das tabelas |
CREATE | permite criar novas tabelas ou bases de dados |
DROP | permite deletar tabelas ou bases de dados |
GRANT OPTION | permite 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.