如何在GRANT命令中指定数据库名称?

时间:2016-07-26 21:37:45

标签: postgresql grant

当前连接到 db1 时,我想更改 db2 的权限。像:

NSTextStorage

但这会导致错误,并且PostgreSQL无法识别语句中的数据库限定符!有没有办法在不断开db1并重新连接到db2的情况下才能做到这一点?

顺便说一句,我是从编程语言而不是GRANT ALL PRIVILEGES ON SCHEMA "db2"."public" TO "user"; 开始这些命令。

[UPDATE]

正如我在评论中所说的那样,这个功能似乎被故意阻止(由于实施挑战或安全原因 - 我不确定)。

无论如何,我认为没有充分理由,这是我的个人意见。如果难以实施,那么这是一个设计缺陷。我认为安全性论点很容易被删除,因为为已经过身份验证和授权的用户添加流程步骤不被视为更好的安全性。

再一次,只是我的意见。

无论如何,我真的很感谢PostgreSQL项目的所有时间和精力。谢谢你们。

1 个答案:

答案 0 :(得分:1)

首先,我不知道这是出于意图还是缺乏实现,但这是PostgreSQL中的一个长期行为。没有跨数据库引用。有许多原因导致目前可能永远不会出现这种情况,特别是在使系统目录正常运行方面遇到困难。基本上,数据库 A 不了解数据库 B 中的结构。

其次,跨数据库信息共享在PostgreSQL中也有点不一致。 ng-class(由于一些奇怪的原因)显示所有数据库中的所有数据库。所以我认为这可能是一个有机的发展,而不是人们坐下来提出这方面的政策。同样,您可能已经意识到,角色和用户是集群全局的。所以我可以看出为什么这看起来有些不一致。

在PostgreSQL中执行此操作的正确方法是连接到要管理权限的数据库。目前,PostgreSQL没有其他方法可以访问相应的目录条目并对其进行修改,并且更改很可能是所以在我看来这种情况不太可能发生。