Sti*_*ens 3 postgresql liquibase postgresql-9.3
我们使用liquibase来管理和执行数据库更改。在我们的DEV环境中(尤其是在本地计算机上),我们经常重新创建表以使表整洁。我们刚刚从MySQL迁移到Postgres,并面临与这些表重新创建有关的问题。
最初,我们向数据库用户授予了以下权限:
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
Run Code Online (Sandbox Code Playgroud)
连接到我们自己的数据库(其中public是默认/唯一模式)后,可通过psql执行此操作。
在我们要求liquibase重新创建表之前,一切都很好,在这种情况下,它将删除所有表并再次创建它们。
之后,似乎mydbuser丢失了表上的所有授予。
据一些资源(如本),我们需要改变默认的权限,所以我们服从:
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE,DELETE ON TABLES TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON SEQUENCES TO mydbuser;
Run Code Online (Sandbox Code Playgroud)
但是,尽管这看起来很合乎逻辑,但它并没有改变。重新创建表后,所有赠款(甚至选择)仍然丢失。
我们做错了什么或我们还需要做些什么?
更新
\ ddp显示:默认访问权限
业主| 架构| 类型 访问权限
---------- + -------- + ---------- + ----------------- ---
postgres | 公共| 顺序| mydb = rU / postgres
postgres | 公共| 桌子| mydb = arwd / postgres
如果尝试在简化的测试案例中模仿liquibase的功能,那么它就可以工作。
9.3快速演示:
1)与postgres
用户从头开始创建对象:
postgres =#创建数据库dbtest; 创建数据库 postgres =#创建用户mydbuser; 创建角色 postgres =#\ c dbtest 现在,您以用户“ postgres”连接到数据库“ dbtest”。 dbtest =#在SCHEMA公共批处理中更改默认权限,将SELECT,INSERT,UPDATE,DELETE删除表到mydbuser; 更改默认权限 dbtest =#创建表foobar(id int); 创建表
2)在另一个会话中,让我们连接mydbuser
并查看是否允许SELECT。
dbtest => select * from foobar; ID ---- (0行)
结果:是,可以。还要注意结果\ddp
:
dbtest => \ ddp 默认访问权限 业主| 架构| 类型 访问权限 ---------- + -------- + ------- + ---------------------- - postgres | 公共| 桌子| mydbuser = arwd / postgres (1列)
3)让我们postgres
删除表并重新创建它:
dbtest =#drop table foobar; 滴台 dbtest =#创建表foobar(id int); 创建表
4)看看是否mydbuser
仍然可以从中进行选择。
$ psql -d dbtest -U mydbuser dbtest => select * from foobar; ID ---- (0行)
结果:是,符合预期。
5)查看其他用户是否可以从中进行选择。
$ psql -d dbtest -U丹尼尔 dbtest => select * from foobar; 错误:关系foobar的权限被拒绝
结果:否,符合预期。
这不能解释什么对您不起作用,但是您可以将以上内容与liquibase发出的命令集进行比较。
归档时间: |
|
查看次数: |
2736 次 |
最近记录: |