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.