Estou portando um aplicativo do SQL Server para o PostgreSQL. A maior parte disso é simples, pois o aplicativo só faz seleções, inserções e atualizações simples. Porém preciso criar um usuário para acessar o banco de dados. O código do SQL Server cria seu usuário assim:
USE [master] CREATE LOGIN [ExampleUserName] WITH PASSWORD = 'ExamplePassword', CHECK_EXPIRATION=OFF, CHECK_POLICY=ON;
USE [ExampleDB];
CREATE USER [ExampleUserName] FOR LOGIN [ExampleUserName];
ALTER ROLE [db_datawriter] ADD MEMBER [ExampleUserName];
ALTER ROLE [db_datareader] ADD MEMBER [ExampleUserName];
Qual é o equivalente disso no PostgreSQL?
Não existe um papel embutido como esse no PostgreSQL. No entanto, você pode configurar um:
Depois disso, você deve atribuir privilégios de gravação (geralmente
INSERT
,UPDATE
,DELETE
, talvezTRUNCATE
) a ele. Para ver como fazer isso para todas as tabelas presentes e futuras, leia minha resposta mais antiga .Normalmente, o acesso de gravação também implica em leituras, portanto, faz sentido adicionar
db_datawriter
como membro dedb_datareader
(que foi configurado de maneira semelhante, masSELECT
apenas com):Em seguida, você pode conceder esses dois a usuários de login diferentes (ou outras funções), conforme necessário:
Observe que
CREATE USER
implica poder fazer login, ao contrário doCREATE ROLE
.