Os bancos de dados são cruciais e é trabalho do administrador controlar quais funções diferentes os usuários podem desempenhar em um determinado banco de dados. Como parte da autorização, o administrador pode definir entidades de usuário no banco de dados e conceder ou revogar vários privilégios para as funções.
Dessa forma, você obtém controle sobre quem pode acessar um banco de dados e quais privilégios eles têm se puderem acessar o banco de dados. Por exemplo, você pode revogar a modificação do banco de dados ou conceder todos os privilégios no esquema a um usuário ou usuários em uma determinada tabela. Este guia detalha como usar o PostgreSQL para conceder a um usuário todos os privilégios no esquema para um usuário.
Como conceder privilégios aos usuários no PostgreSQL
Quando você cria uma nova função, eles obtêm alguns privilégios por padrão. No entanto, a maioria dos privilégios exige que o administrador os conceda a diferentes usuários para regular o acesso e o controle de um esquema. Você pode conceder todos os privilégios de uma vez ou separadamente.
Para este tutorial, vamos criar um novo Função nomeado linuxhint1 .
$ sudo -iu postgres
# cria a senha de login do papel linuxhint1 ‘linuxhint’;
Note que estamos logados como postgres, a função padrão criada após a instalação do PostgreSQL.
Com o papel (usuário) criado, podemos listar os papéis disponíveis usando o seguinte comando:
As funções disponíveis serão exibidas em formato de tabela.
Postgre é a função padrão e tem a maioria dos privilégios já concedidos. No entanto, o novo papel, linuxhint1, não tem privilégios até que o concedamos.
1. Concedendo um Privilégio Específico a um Usuário
A função criada não pode modificar o esquema, a menos que você permita. Vamos verificar isso criando primeiro uma tabela como a função padrão, postgres.
# criar nomes de tabela ( m_id int gerado sempre Como identidade, fname vachar ( 100 ) não nulo, lname varchar ( 100 ) não nulo, idade int ) ;
Você pode listar as relações disponíveis, conforme mostrado abaixo:
Em seguida, abra um novo shell e faça login no PostgreSQL usando a outra função, linuxhint1, que criamos anteriormente usando o seguinte comando:
o -d especifica que a função é usar o banco de dados Postgres.
Tente ler o conteúdo da tabela que criamos usando o SELECIONE comando.
# SELECIONE * DE nomes;
Ele retorna um permissão negada erro impedindo o usuário de acessar a tabela.
Nesse caso, precisamos conceder privilégios de função para selecionar/visualizar dados da tabela fornecida usando a seguinte sintaxe:
Para conceder os privilégios, use a sessão do Postgres.
Depois de concedido, tente executar novamente o comando anterior.
É isso. Você conseguiu conceder o privilégio de seleção ao usuário específico.
2. Concedendo todos os privilégios no esquema a um usuário
Até agora, conseguimos conceder apenas um privilégio no esquema a um usuário. Bem, isso não é suficiente. O usuário não pode modificar o esquema a menos que você conceda todos os privilégios, como inserir e atualizar.
Existem diferentes maneiras de conseguir isso. Primeiro, vamos conceder ao usuário todos os privilégios para uma determinada tabela usando a seguinte sintaxe:
# GRANT ALL ON table_name TO role_name;
O usuário pode interagir e modificar a tabela específica. No entanto, eles não podem trabalhar com outras tabelas no esquema.
Para conceder todos os privilégios em todas as tabelas em um esquema específico , use a seguinte sintaxe:
# GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO role_name;
Por último, você pode conceder privilégios específicos, como inserir ou selecionar todas as tabelas no esquema para uma determinada função .
A função pode selecionar dados em todas as tabelas no esquema especificado. É assim que você define quais privilégios conceder no esquema para diferentes usuários.
Conclusão
O PostgreSQL é um poderoso DBMS. Possui diversas funcionalidades, inclusive permitindo que o administrador conceda diversos privilégios aos usuários. Conceder todos os privilégios no esquema aos usuários significa permitir que o usuário modifique e interaja com todas as tabelas no esquema especificado. Vimos como aplicar essa e outras formas de conceder privilégios no esquema para funções usando a instrução GRANT no PostgreSQL.