Pesquisa de site

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


MySQL é um sistema de gerenciamento de banco de dados popular e amplamente utilizado que armazena e organiza dados e permite aos usuários recuperá-los. Ele vem com uma vasta gama de opções que concedem aos usuários certas permissões para tabelas e bancos de dados.

Neste guia, você aprenderá como criar um novo usuário e conceder permissões no banco de dados MySQL.

Como criar um novo usuário no MySQL

Para criar um novo usuário, primeiro faça login no shell do MySQL.

sudo mysql -u root -p

Forneça a senha sudo seguida pela senha fornecida ao configurar o banco de dados MySQL e pressione ENTER. Depois disso, você receberá este prompt.

Para criar um novo usuário, use a sintaxe mostrada abaixo:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Por exemplo, para criar um novo usuário chamado ‘tecmint’ dentro do banco de dados, invoque o comando:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Alguns pontos para manter em mente

Ao adicionar um usuário localmente, ou seja, no sistema em que você instalou o MySQL, o host do usuário é especificado como localhost, e não o endereço IP. A palavra-chave 'localhost' se traduz em 'este computador' e o MySQL a trata de maneira única. Basicamente, localhost é usado pelo cliente MySQL para estabelecer uma conexão com o servidor de banco de dados MySQL instalado localmente.

Até o momento, o usuário tecmint não possui nenhuma permissão para interagir com os bancos de dados. Na verdade, o usuário não consegue nem acessar o shell do MySQL.

Para conceder ao usuário acesso total a todos os bancos de dados, incluindo as tabelas, execute.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

No comando acima, os asteriscos apontam respectivamente para o banco de dados e a tabela que o usuário pode acessar. Ele concede ao usuário todos os direitos sobre o banco de dados – ler, escrever, editar e executar incluindo executar todas as tarefas em outros bancos de dados e tabelas também.

Até agora, concedemos ao usuário acesso total ao banco de dados. Embora isso seja útil para explicar os conceitos do MySQL, geralmente não é recomendado, pois pode representar um risco de segurança para seus bancos de dados. Pense no que poderia acontecer se um hacker conseguisse a senha do usuário. Prosseguiremos e discutiremos como atribuir permissões específicas na próxima seção.

Quando terminar de atribuir permissões ao usuário, recarregue todos os privilégios conforme mostrado para que as alterações tenham efeito.

MariaDB [none]> FLUSH PRIVILEGES

Como conceder diferentes permissões de usuário

Aqui está um detalhamento das possíveis permissões que você pode conceder aos usuários:

  • TODOS OS PRIVILÉGIOS – Como visto anteriormente, isso concede ao usuário MySQL acesso total a um banco de dados específico.
  • CREATE – Permite aos usuários criar novos bancos de dados ou tabelas.
  • DROP – Permite que os usuários excluam bancos de dados ou usuários.
  • INSERT – Permite aos usuários inserir linhas em tabelas.
  • DELETE – Permite que os usuários excluam linhas das tabelas.
  • SELECT – com permissão ‘SELECT’, os usuários podem ler o conteúdo de uma tabela.
  • UPDATE – Permite que os usuários atualizem as linhas de uma tabela.
  • OPÇÃO DE CONCESSÃO – Os usuários podem conceder ou remover privilégios de outros usuários.

Para conceder permissão a um usuário específico, use a sintaxe:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Além disso, você pode atribuir permissões a todas as tabelas em um banco de dados com um único símbolo de asterisco, conforme mostrado:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Por exemplo, para atribuir permissões SELECT ao usuário ‘tecmint‘ em todas as tabelas do banco de dados testdb, execute o comando.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Em seguida, libere privilégios para que as alterações tenham efeito.

MariaDB [none]> FLUSH PRIVILEGES;

Além disso, você pode atribuir várias permissões de uma só vez, separando-as com uma vírgula, conforme mostrado.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Como revogar permissões do MySQL

Para revogar permissões de um usuário, use a sintaxe:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Por exemplo, para revogar as permissões INSERT do usuário ‘tecmint’, execute o comando.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Para dar uma olhada nas permissões atuais de um usuário, execute:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Na saída abaixo, podemos ver que a permissão INSERT foi eliminada do usuário 'tecmint', deixando apenas SELECT e UPDATE no banco de dados testdb.

Para testar o login no shell do MySQL usando o novo usuário, primeiro efetue logout.

MariaDB [none]> quit;

Em seguida, faça login novamente.

sudo mysql -u tecmint -p

Forneça a senha do usuário e pressione ENTER para acessar o shell.

Para descartar um usuário, use o comando DROP, da mesma forma que faria ao excluir um banco de dados.

MariaDB [none]> DROP USER 'username'@'localhost';

Você também pode gostar de ler os seguintes artigos relacionados ao MySQL:

  • Dicas úteis para solucionar erros comuns no MySQL
  • Mytop – Uma ferramenta útil para monitorar o desempenho do MySQL/MariaDB no Linux
  • Como alterar a porta MySQL/MariaDB padrão no Linux
  • Como redefinir a senha root do MySQL ou MariaDB no Linux
Conclusão

Esperançosamente, agora você pode criar usuários em seus servidores de banco de dados MySQL e atribuir ou revogar permissões confortavelmente.