为什么一个数据库中的权限影响具有相同模式的另一个

时间:2013-09-07 16:48:59

标签: ruby-on-rails postgresql

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

1 个答案:

答案 0 :(得分:0)

角色是群集全局的。这导致了许多可能发生的事情。一般来说,在排除故障时你应该熟悉pgAdmin或psql。前者允许您在GUI中查看db对象的权限。对于后者,请使用\z relation查看拨款。

有两种可能的结果:

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

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