我希望这个问题足够具体,可以被允许,而不是注定要基于意见:
我在管理 postgres 数据库方面相当陌生。我的基本方法是为每个现实世界的用户创建一个新的用户/角色。我认为这对于用户同时访问同一个数据库的用例是有利的。但是,我意识到这在授予对未来表的访问权限方面有一些缺点。
我现在怀疑我的概念(每个真实用户的单独用户帐户)不是“通常的方式”。我可以想象,只有一个通用用户/角色就足够了,每个现实世界的用户都使用相同的通用角色来连接、创建、读取、写入、修改数据和表?
即使在并发读/写操作的情况下,postgres 也能很好地处理这样的设置吗?这第二个概念(一个用户帐户用于许多用户)是否很好并且经常应用?
提前感谢您的帮助(或指出我错过的适当的 www-sources)。
基本上有两种选择:
您的应用程序自己进行用户和权限管理。然后它通常在数据库中有一个“应用程序用户”。
您的应用程序具有每个用户或每个组的数据库用户,并使用数据库方式处理用户和权限管理。
两种解决方案都很好。如果您有很多用户,则第二种解决方案可能不太值得称道。此外,连接池通常使用第一种技术效果更好。
如果你像第二种解决方案那样使用数据库用户,你应该使用
NOLOGIN
PostgreSQL 中的角色(用户组)来承载权限,并根据需要将命名用户分配给组。GRANT
这样,每当您添加或删除用户或更改用户在应用程序中的角色时,您就不必拥有REVOKE
很多权限。要回答您的问题,对不同数据库用户的并发没有限制。