Como criar um novo usuário e conceder permissões no MariaDB e MySQL

como-criar-um-novo-usuario-e-conceder-permissoes-no-mariadb-e-mysql

Neste tutorial, saiba como criar um usuário e conceder permissões no MariaDB e MySQL. O  MariaDB e MySQL são sistemas de gerenciamento de banco de dados (SGBD), que possuem uma variedade de opções para conceder a usuários específicos permissões diferenciadas em tabelas e bases de dados. Este artigo vai lhe dar um breve resumo de algumas das muitas opções que eles oferecem.

Mas, também temos um tutorial para instalar Nginx, MariaDB e PHP 8.1, LEMP stack, no Ubuntu 22.04 LTS Jammy Jellyfish.

Como criar um Novo Usuário no MariaDB ou MySQL no Linux

Vamos fazer toda a edição no MariaDB ou MySQL como usuário root, já que ele tem acesso total a todos os bancos de dados e tabelas dentro desses bancos de dados. Os comandos a seguir funcionam tanto no MariaDB como no MySQL.

Terminal
sudo mysql -u root -p

Vamos começar criando um usuário:

Terminal
CREATE USER 'novousuario'@'localhost' IDENTIFIED BY 'minhasenha';

Infelizmente, nesse momento o “novousuario” não tem permissão para fazer nada com as bases de dados. Na verdade, se o “novousuario” tentar fazer login (com a senha “minhasenha”), ele não conseguirá chegar ao shell do MySQL ou do MariaDB.

Portanto, a primeira coisa a fazer é fornecer ao usuário o acesso às informações que ele vai precisar, com o seguinte comando:

Terminal
GRANT ALL PRIVILEGES ON * . * TO 'novousuario'@'localhost';

Os asteriscos neste comando referem-se ao banco de dados e à tabela respectivamente que eles podem acessar. Este comando permite ao usuário ler, editar, executar e realizar todas as tarefas em todas as bases de dados e tabelas, tendo assim as mesmas permissões de acesso que o usuário root.

Feito isso, vamos recarregar as permissões do nosso banco de dados com esse comando:

Terminal
FLUSH PRIVILEGES;

Como conceder permissões específicas para usuários no MariaDB ou MySQL

Não é muito inteligente conceder acesso de nível de root a um usuário como a gente fez acima. Imagine que você precisa dar acesso ao banco de dados para uma pessoa que precisa ver as tabelas. Ao conceder acesso à nível de root para essa pessoa, ela pode alterar algum dado de alguma tabela, excluir ou fazer alguma coisa pior. Então, é melhor você criar um usuário e especificar as permissões que ele tem acesso, assim você tem mais controle de quem pode acessar o seu banco de dados e o que vai acessar.

A sintaxe do comando que concede privilégios é essa:

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

Aqui está uma pequena lista de outras possíveis permissões que os usuários podem utilizar, você pode ver a lista completa aqui.

  • ALL PRIVILEGES- como vimos anteriormente, isso daria 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)
  • CREATE- permite criar novas tabelas ou bases de dados
  • DROP- permite deletar tableas ou bases de dados
  • 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
  • GRANT OPTION- permite conceder ou revogar privilégios de outros usuários

Para aplicar mais de uma permissão a um usuário é só separar com uma vírgula. Por exemplo, vamos atribuir a um determinado usuário a permissão de UPDATE e DELETE:

Terminal
GRANT UPDATE, DELETE ON * . * TO 'nome-do-usuario'@'localhost';
Cada vez que você atualizar ou mudar uma permissão certifique-se de utilizar o comando FLUSH PRIVILEGES

Remover uma permissão do MariaDB ou MySQL

Se você precisar revogar uma permissão, a estrutura é quase idêntica a concedê-la:

REVOKE tipo-de-permissão ON nome-da-base-de-dados . nome-da-tabela FROM 'nome-do-usuário'@'localhost';

Vamos remover a permissão de UPDATE de um usuário. Exemplo:

REVOQUE UPDATE ON *. * FROM 'nome-do-usuario' @ 'localhost';

Excluir um usuário

Assim como você pode deletar bases de dados com o DROP, você pode utilizar o DROP para excluir um usuário:

DROP USER 'nome-do-usuario'@'localhost';

Testando o novo usuário

Para testar seu novo usuário, faça logout digitando:

Terminal
quit

E faça login de novamente com este comando:

Terminal
mysql -u nome-do-usuário -p

Feito! Qualquer questão que não tenha sido esclarecida neste tutorial, você pode entrar em nosso grupo no Telegram em @sitesempreupdate. Por lá, há muitas pessoas que podem ajuda você.