创建 postgres 用户

Posted

技术标签:

【中文标题】创建 postgres 用户【英文标题】:Creating a postgres user 【发布时间】:2014-11-19 13:29:26 【问题描述】:

我想在我的 web 应用程序中使用 postgres 中的典型用户。

    Web 应用程序需要访问所有表。 用户应该能够读/写所有表(选择、更新、删除、插入)

所有表都属于公共架构

创建此用户的最佳做法是什么?

数据库名称:acmeinc 用户:acmeuser

到目前为止,我已经尝试过了,但我什至无法更新表(关系上的权限错误):

create user acmeuser
grant all privileges on database acmeinc to acmeuser
alter schema public owner to acmeuser

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO acmeuser

更新

我正在运行上面的代码:

psql acmeinc -c "create user acmeuser"

我应该创建一个角色,然后将用户 acmeuser 关联到该角色吗?

【问题讨论】:

你忘记了分号。 我更新了我的问题以显示我是如何运行语句的,我会用分号再试一次。顺便说一句,当我运行命令时,我确实收到了类似“GRANT”的回复。仍然收到错误ERROR: permission denied for relation tableabc 您在哪个命令收到了权限被拒绝消息? update table123 set col3='23' where id=1; 选择工作正常。 啊。授予数据库不会授予其中的表。此外,alter default privs 仅影响运行后创建的表。您希望在架构中的所有表上授予 ...。 【参考方案1】:

我认为您的问题源于对GRANT 的两个误解:

授予数据库并不授予其中的表,它仅授予数据库对象自身的权限;和

ALTER DEFAULT PRIVILEGES 仅影响在运行后创建的表,不会更改现有表。

你想要GRANT ... ON ALL TABLES IN SCHEMA ...

【讨论】:

我必须对序列和函数运行单独的查询?

以上是关于创建 postgres 用户的主要内容,如果未能解决你的问题,请参考以下文章

角色“postgres”不存在;无法创建用户

创建 postgres 用户

postgres基本操作大全

Postgres安装设置及创建用户赋予权限

Postgres 不创建角色

postgres仅在不存在时创建用户[重复]