PostgreSQL concede todos os privilégios no esquema ao usuário

Postgresql Concede Todos Os Privilegios No Esquema Ao Usuario



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:

# \ a partir de


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:

$ psql -DENTRO linuxhint1 -d postgres



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:

# GRANT nome_do_privilégio ON nome_da_tabela TO nome_da_função;


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 .

# GRANT nome_do_privilégio EM TODAS AS TABELAS NO ESQUEMA nome_do_esquema TO nome_da_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.