7

因此,我们有一个受限用户应该更新、插入和删除表,以及一个可以创建、更改和删除表的用户。

我们使用 alembic 来迁移数据库,所以当然第二个用户必须运行迁移,但是第一个用户没有使用表的权限。

当然,我可以运行一些 postgres 特定的代码来单独更改任何 alembic 创建的所有者,但这是不对的。我该怎么解决这个问题?或者这是一个postgres问题?我看不到如何在一个数据库的不存在的表上授予 user1 东西。

4

1 回答 1

5

我知道这是一个老问题,但我遇到了同样的问题,并为此找到了两个不错的解决方案:

1. 快速简便 -grant在升级模板 (script.py.mako) 中添加一个通用命令:我的看起来是这样的:

def upgrade():
    ${upgrades if upgrades else "pass"}
    sql = "grant all on all tables in schema public to simpleuser"
    op.execute(sql)

2. 如果您对过于笼统的授权语句不满意,您可以尝试更改create_tablealembic 中的指令以在创建表后添加特定的授权命令。我发现这种态度过于复杂,但如果这是您想要的方向,请在此处阅读有关 alembic api 的信息

PS 在授予对表的访问权限时,如果它们有序列号,则永远不要忘记它们的序列

于 2017-07-02T20:18:00.990 回答