我想在我的网络应用程序中使用postgres中的典型用户。
所有表都属于公共架构
创建此用户的最佳做法是什么?
数据库名称:acmeinc user: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与角色相关联吗?
答案 0 :(得分:2)
我认为你的问题源于围绕GRANT
的两个误解:
授予数据库不授予其中的表,它只授予其自身对数据库对象的权限;以及
ALTER DEFAULT PRIVILEGES
仅影响在运行后创建的表,它不会更改现有表。
您想要GRANT ... ON ALL TABLES IN SCHEMA ...
。