我正在从MySQL迁移到PostgreSQL并且已经打破了用户权限.我习惯使用以下命令为用户分配数据库的所有表的所有权限:
# MySQL
grant all privileges on mydatabase.* to 'myuser'@'localhost' identified by 'mypassword';
Run Code Online (Sandbox Code Playgroud)
在我看来,PostgreSQL 9.x解决方案涉及为"模式"分配权限,但我需要努力弄清楚究竟要发出什么SQL证明是过分的.我知道再花几个小时的研究会得出答案,但我认为每个从MySQL迁移到PostgreSQL的人都可以从网上至少有一个提供简单完整配方的页面中受益.这是我需要为用户发出的唯一命令.我宁愿不必为每个新表发出命令.
我不知道在PostgreSQL中必须以不同的方式处理哪些场景,所以我将列出我过去通常必须处理的一些场景.假设我们只想修改已创建的单个数据库的权限.
(1a)并非所有表都已创建,或(1b)表已经创建.
(2a)尚未创建用户,或(2b)已创建用户.
(3a)尚未将权限分配给用户,或者(3b)先前已将权限分配给用户.
(4a)用户只需要插入,更新,选择和删除行,或者(4b)用户还需要能够创建和删除表.
我已经看到了为所有数据库授予所有权限的答案,但这不是我想要的.拜托,我正在寻找一个简单的食谱,虽然我也不介意解释.
我不想授予所有用户和所有数据库的权限,因为这似乎是传统的快捷方式,因为当任何一个用户受到攻击时,该方法会破坏所有数据库.我托管多个数据库客户端并为每个客户端分配不同的登录.
看起来我还需要USAGE获得serial列的增加值的权限,但我必须以某种顺序授予它.我的问题变得更复杂了.