我正在从MySQL迁移到PostgreSQL,在用户权限方面遇到了麻烦。我习惯使用以下命令将所有表的所有权限分配给一个用户:
我正在从 MySQL 迁移到 PostgreSQL,但在用户权限方面遇到了问题。我习惯使用以下命令将某个用户赋予该数据库中所有表的所有权限:
# MySQL
grant all privileges on mydatabase.* to 'myuser'@'localhost' identified by 'mypassword';
我认为 PostgreSQL 9.x 的解决方案涉及将权限分配给“模式”,但是我需要花费大量精力才能弄清楚要发出什么 SQL。我知道再研究几个小时就会得到答案,但我认为每个从 MySQL 到 PostgreSQL 转移的人都可以受益于至少在网上提供一个简单完整的教程。这是我曾经需要为用户发出的唯一命令。我不想为每个新表发出命令。我不知道在 PostgreSQL 中有哪些情况需要以不同方式处理,因此我列出了我过去通常必须处理的一些情况。假设我们只想修改已创建的单个数据库的权限。
(1a) 并非所有表都已创建,或者 (1b) 表已经被创建。
(2a) 用户尚未创建,或者 (2b) 用户已经被创建。
(3a) 权限尚未分配给用户,或者 (3b) 先前已向用户分配了权限。
(4a) 用户仅需要插入、更新、选择和删除行,或者 (4b) 用户还需要能够创建和删除表。
我看到了授予所有数据库的所有权限的答案,但那不是我想要的。请注意,我正在寻找一个简单的教程,尽管我不介意也有一些解释。
我不想授予所有用户和所有数据库的权限,因为这种方法会在任何一个用户受到损害时危及所有数据库。我托管多个数据库客户端,并为每个客户分配不同的登录名。
看起来我还需要 USAGE 权限才能获得序列列的递增值,但是我必须在某种序列上授予它。我的问题变得更加复杂了。