PostgreSQL 授予对表的访问权限
Posted
技术标签:
【中文标题】PostgreSQL 授予对表的访问权限【英文标题】:PostgreSQL grant access to table 【发布时间】:2021-07-13 10:26:10 【问题描述】:我在 PostgreSQL 中有 user1 和 user2 用户。我在 PostgreSQL 中创建了一个数据库和一个名为 data
的方案。
在数据库中,我执行了以下语句:
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT ALL ON TABLES TO user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT ALL ON TABLES TO user2;
我以 user1 身份登录并在数据架构中创建了表,然后我以 user2 身份登录,但无法使用 user2 凭据从 table1 中选择 *。
有什么方法可以创建表(未来)并授予用户 1 和用户 2 的访问权限,而不仅仅是表的所有者?
我目前使用的是 PostgreSQL 13。
【问题讨论】:
您在运行这些 ALTER 语句时使用了哪个用户登录? @a_horse_with_no_name 我以 postgres 用户身份登录以执行 ALTER 语句。 【参考方案1】:您编写ALTER DEFAULT PRIVILEGES
语句的方式,适用于运行该语句的用户创建的表。
要更改user1
创建的表的默认权限,请运行
ALTER DEFAULT PRIVILEGES FOR ROLE user1 IN SCHEMA data GRANT ALL ON TABLES TO user2;
【讨论】:
感谢 Laurenz 提供的信息。但是如果我有一个用户/角色列表,我可以问我该怎么做吗? 如果所有这些用户都创建表,您需要大量的ALTER DEFAULT PRIVILEGES
语句。没有办法解决这个问题。尝试自动化。
我明白了。感谢您的信息!感谢您的帮助!【参考方案2】:
您可能需要在 select * from **data.**table1 使用 user2 凭据之前指定架构。
【讨论】:
以上是关于PostgreSQL 授予对表的访问权限的主要内容,如果未能解决你的问题,请参考以下文章