3.2. Criação de Usuários e Atribuição de Permissões¶
No PostgreSQL, os usuários são utilizados para autenticação e gerenciamento de acessos aos bancos de dados. É importante criar usuários e atribuir as permissões adequadas para garantir a segurança e controle de acesso ao seu sistema de banco de dados.
Acessando o psql¶
Antes de criar usuários e atribuir permissões, certifique-se de que está conectado à interface de linha de comando do PostgreSQL (psql). Você pode seguir as etapas descritas na seção anterior para acessar o psql localmente ou remotamente, conforme necessário.
Criando um Usuário¶
Para criar um novo usuário no PostgreSQL, você pode usar o comando CREATE USER
, seguido pelo nome do usuário e suas opções. Aqui está a sintaxe básica do comando:
Substitua <nome_do_usuario>
pelo nome do usuário que você deseja criar. Você pode especificar opções adicionais, como senha, atribuições de grupo, permissões, entre outros.
Por exemplo, para criar um usuário chamado "usuario_dono
" com uma senha, você pode executar o seguinte comando:
Isso criará um novo usuário com o nome "usuario_dono
" e a senha especificada.
Atribuindo Permissões aos Usuários¶
Após criar um usuário, você pode atribuir permissões específicas a ele. O PostgreSQL usa o conceito de "funções" para controlar as permissões de usuários. Uma função pode ser um usuário individual, um grupo de usuários ou até mesmo um papel especial.
Para atribuir permissões a um usuário, você pode usar o comando GRANT
. Aqui está a sintaxe básica do comando:
Substitua <permissão>
pela permissão que você deseja conceder, <objeto>
pelo objeto ao qual a permissão se aplica e <nome_do_usuario>
pelo nome do usuário ao qual você deseja atribuir a permissão.
Por exemplo, para conceder ao usuário "usuario_dono
" permissão para criar tabelas em um determinado banco de dados ("meu_db
"), você pode executar o seguinte comando:
Importante
Para este exemplo, é necessário criar um banco de dados para testes. Caso ainda não tenha feito isso, você pode criá-lo agora utilizando o comando abaixo:
Antes de prosseguir, suponhamos que você esteja acessando o psql
como superusuário. Antes de atribuir permissões aos usuários, é importante garantir que você esteja acessando o banco de dados correto. Caso contrário, você pode acabar atribuindo permissões ao banco de dados padrão, o "postgres
", o que causará dois problemas:
- Atribuir permissões a um banco de dados que, por boas práticas, não deve ser manipulado diretamente.
- O banco de dados que realmente deveria receber as atribuições de permissão não as receberá.
Portanto, certifique-se sempre de estar conectado ao banco de dados correto antes de atribuir permissões aos usuários. Você pode alternar entre os bancos de dados disponíveis através do comando:
Em nosso caso, substituindo <nome_do_banco_de_dados>
pelo nome correto do banco de dados, o comando ficaria assim:
Perceba que o prompt de comando deverá ter uma aparência similar a esta:
Ao seguir essas orientações e garantir que você esteja conectado ao banco de dados adequado antes de prosseguir com a atribuição de permissões, você evitará problemas de segurança e manterá boas práticas no gerenciamento de seu banco de dados PostgreSQL.
Agora sim, acessando o banco de dados "meu_db
", podemos conceder a permissão de criar tabelas ao usuário "usuario_dono
":
Você pode conceder várias permissões a um usuário e também revogar permissões usando o comando REVOKE
. Aqui está a sintaxe básica do comando REVOKE
:
Substitua <permissão>
pela permissão que você deseja revogar, <objeto>
pelo objeto ao qual a permissão se aplica e <nome_do_usuario>
pelo nome do usuário do qual você deseja revogar a permissão.
Por exemplo, para revogar a permissão de criação de tabelas do usuário "usuario_dono
", você pode executar o seguinte comando:
Isso revogará a permissão de criação de tabelas do usuário "usuario_dono
" no banco de dados "meu_db
".
Permissões mais comuns¶
Aqui estão algumas das permissões mais comumente usadas no PostgreSQL:
SELECT
: Permite selecionar (consultar) dados de uma tabela ou visualização.INSERT
: Permite inserir novos dados em uma tabela.UPDATE
: Permite atualizar os dados existentes em uma tabela.DELETE
: Permite excluir dados de uma tabela.REFERENCES
: Permite criar uma restrição de chave estrangeira em uma tabela.TRIGGER
: Permite criar gatilhos (triggers) em uma tabela.CREATE
: Permite criar novos objetos no banco de dados, como tabelas, índices, visualizações, etc.ALTER
: Permite realizar alterações em objetos existentes no banco de dados, como renomear tabelas, adicionar colunas, etc.DROP
: Permite excluir objetos do banco de dados, como tabelas, índices, etc.GRANT
: Permite conceder permissões a outros usuários.USAGE
: Permite usar objetos do banco de dados, como sequências (sequences), tipos (types), etc.
Essas são apenas algumas das permissões disponíveis no PostgreSQL. O PostgreSQL oferece um sistema de permissões muito flexível, permitindo que você conceda permissões específicas a usuários e grupos de usuários em objetos individuais ou em níveis mais amplos, como esquemas e bancos de dados inteiros.
ALL PRIVILEGES
¶
No PostgreSQL, a palavra-chave ALL
pode ser usada para conceder ou revogar todas as permissões disponíveis em um determinado nível de objeto. Ao conceder ALL PRIVILEGES
, você está concedendo todas as permissões disponíveis para o objeto especificado.
Por exemplo, ao conceder ALL PRIVILEGES
em uma tabela, você está concedendo permissões como SELECT
, INSERT
, UPDATE
, DELETE
, REFERENCES
, TRIGGER
, entre outras. Isso permite que o usuário tenha controle total sobre a tabela, podendo realizar qualquer operação nela.
A sintaxe para conceder todas as permissões é a seguinte:
Substitua <objeto>
pelo objeto específico (tabela, esquema, banco de dados, etc.) e <nome_do_usuario>
pelo nome do usuário ao qual você deseja conceder as permissões.
Da mesma forma, ao revogar ALL PRIVILEGES
, você está revogando todas as permissões concedidas anteriormente para o objeto específico.
É importante usar o comando ALL PRIVILEGES
com cautela, pois ele concede ou revoga todas as permissões, dando ao usuário controle total sobre o objeto. Portanto, verifique se o usuário realmente precisa de todas as permissões antes de usá-lo.
Além disso, é possível usar ALL
sem a palavra-chave PRIVILEGES para conceder ou revogar todas as permissões disponíveis em um determinado nível. Por exemplo, GRANT ALL ON TABLE
ou REVOKE ALL ON SCHEMA
.
Lembre-se de que, ao conceder permissões, você precisa garantir que os usuários tenham apenas as permissões necessárias para realizar suas tarefas. Conceder permissões em excesso pode levar a problemas de segurança e acesso não autorizado aos dados.
Para obter mais detalhes sobre as permissões no PostgreSQL e todas as opções disponíveis, recomendo consultar a documentação oficial do PostgreSQL sobre permissões.
Listando Usuários e Permissões¶
Para listar todos os usuários existentes no PostgreSQL, você pode usar o comando \du
dentro do psql
. Isso exibirá uma lista de usuários, juntamente com suas atribuições de grupo e outras informações relevantes.
Além disso, você pode usar o comando \l
para listar todos os bancos de dados disponíveis e as permissões concedidas a cada usuário.
Excluindo um Usuário¶
Se por algum motivo você precisar excluir um usuário, pode usar o comando DROP USER
seguido pelo nome do usuário. Aqui está a sintaxe básica do comando:
Cuidado!
Lembre-se de ter cuidado ao usar o comando DROP USER
, pois isso excluirá permanentemente o usuário e todas as suas associações e permissões.
Dicas Úteis
Aqui estão algumas dicas úteis ao trabalhar com usuários e permissões no PostgreSQL:
- Use nomes de usuário descritivos e significativos para facilitar a identificação e o gerenciamento.
- Gerencie cuidadosamente as permissões dos usuários para garantir a segurança e a integridade dos seus dados.
- Revise regularmente as permissões concedidas aos usuários e faça ajustes conforme necessário.
- Faça backup das permissões e configurações importantes do usuário para evitar perdas de dados.
Agora você sabe como criar usuários e atribuir permissões no PostgreSQL. Você pode continuar explorando os recursos de segurança e controle de acesso do PostgreSQL para garantir a integridade dos seus dados e a segurança do seu sistema de banco de dados. Click aqui para acesso a documentação oficial.
Espero que este guia seja útil para você.