因此,我们有一个受限制的用户,应该对表进行更新,插入和删除,以及可以创建,更改和删除表的用户。
我们使用alembic迁移数据库,因此当然第二个用户必须运行迁移,但第一个用户无权使用这些表。
当然,我可以运行一些postgres特定的代码来单独更改所有的alembic创建的所有者,但这不可能是正确的。我该怎么解决这个问题?或者这是一个postgres问题?我不知道如何在一个数据库的不存在的表上授予user1内容。
答案 0 :(得分:2)
我知道这是一个老问题,但我遇到了同样的问题,并为此找到了两个不错的解决方案:
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。
如果您对过于通用的grant语句不满意,可以尝试更改alembic中的create_table
指令,以便在创建表后添加特定的grant命令。我发现这种态度过于复杂,但如果这是你想要的方向,请阅读alembic api here
P.S。在授予对表的访问权限时,如果有序列号,则永远不要忘记它们的序列