0

我有数据库 A 和 B 以及用户 app_user。他们都有公开的模式。我授予 app_user 对数据库 A 的读取权限。当我的应用程序运行时,它抱怨“关系不存在”。当我以该用户身份登录到 db A 时,我确实可以从表中进行选择。接下来我完全删除了数据库 B,现在我的应用程序运行了.... ???? 顺便说一下,这是一个在 postgres 数据库上运行的 rails 应用程序。rails 应用程序基于配置指向 db A。

4

1 回答 1

0

角色是集群全局的。这导致了许多可能发生的事情。一般来说,在解决这个问题时,您应该熟悉 pgAdmin 或 psql。前者让您可以在 GUI 中查看对 db 对象的权限。对于后一种用途\z relation,请查看赠款。

有两个可能的罪魁祸首:

  1. 授予PUBLIC不是角色但允许访问任何经过身份验证的用户的权限。

  2. 两个数据库中对同一角色的相同授权。如果您删除第一个数据库,该角色将不会被删除,因此您的第二个数据库仍然可以工作。这是设计的行为。

于 2013-11-13T23:49:57.637 回答