我尝试应用其中任何一个来创建 read_only_user:
- https://docs.snaplet.dev/guides/postgresql
- https://www.commandprompt.com/education/how-to-create-a-read-only-user-in-postgresql/#:~:text=结论-,To%20create%20a%20read%2Donly%20user %20in%20the%20PostgreSQL%20数据库、架构%2C%20和%20表%20in%20it。
- https://www.keyvanfatehi.com/2021/07/14/how-to-create-read-only-user-in-postgresql/
在所有情况下,新的 read_only_user 都能够在我的数据库(此处:MicroReseau)中创建一个新表,我想阻止这种情况发生。
为什么 read_only_user 可以创建新表以及如何防止这种情况?
附加信息:
您没有提供任何相关信息,但让我们猜测一下:您使用的是早于 v15 的 PostgreSQL 版本,并且您没有撤销架构上的默认不安全权限
public
。就像文档所说:
我刚刚找到了。
问题是因为我的数据库所在的架构具有安全权限,“PUBLIC”用户授予访问权限。这是创建新数据库时默认定义的方式。
我删除了“公共”访问权限。就我而言,已经有数据库的所有者被授予特权“UC”。然后,用于创建 read_only_user 的问题中的链接按预期工作。
顺便说一句,我还将 Schema 的名称从“PUBLIC”更改为 DatabaseOwner 的名称(除了在 pgAdmin 等工具上显示时更容易理解之外,该更改没有任何影响)。
仅供参考:
前
之后(我还将其名称从“public”更改为databaseOwner的名称。