使用Flyway迁移的Amazon RDS中的PostgreSQL权限

使用Flyway迁移的Amazon RDS中的PostgreSQL权限,postgresql,amazon-web-services,flyway,Postgresql,Amazon Web Services,Flyway,我试图让Flyway启动并运行Postgres的数据库源代码控制,但遇到了权限问题 情景: AWS RDS PostgreSQL实例上的新数据库 RDS超级用户配置为“postgres”,我以该身份登录以创建db和设置角色 我创建了一个“flyway\u用户”帐户,希望flyway工具使用该帐户,并将其添加到rds\u超级用户角色中 我创建了两个模式,flyway将管理这些模式,并将所有模式授予“flyway_用户”帐户 然后,当我尝试让flyway进行迁移以在这些模式中创建表时,我得到一个

我试图让Flyway启动并运行Postgres的数据库源代码控制,但遇到了权限问题

情景: AWS RDS PostgreSQL实例上的新数据库

  • RDS超级用户配置为“postgres”,我以该身份登录以创建db和设置角色

  • 我创建了一个“flyway\u用户”帐户,希望flyway工具使用该帐户,并将其添加到rds\u超级用户角色中

  • 我创建了两个模式,flyway将管理这些模式,并将所有模式授予“flyway_用户”帐户


然后,当我尝试让flyway进行迁移以在这些模式中创建表时,我得到一个权限被拒绝的错误。那么我在这里错过了什么?提前感谢您的建议。

据我所知,您必须将postgres用户的密码设置为flyway,因为flyway会自动使用该密码。根据

我知道这个问题很老了,但它出现在谷歌上,我也遇到了同样的问题

虽然这些权限可能有点过于宽松,但在使用RDS和特定于Flyway的用户时,为了正确迁移Flyway,我已经做到了这一点

-- Create a Migrator Role
CREATE ROLE schema_migrator;
GRANT ALL PRIVILEGES ON DATABASE <database> TO schema_migrator;
GRANT ALL PRIVILEGES ON SCHEMA <schema> TO schema_migrator;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO schema_migrator;
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL PRIVILEGES ON TABLES TO schema_migrator;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA <schema> TO schema_migrator;
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL PRIVILEGES ON SEQUENCES TO schema_migrator;

-- Assign Role to flyway_user
GRANT schema_migrator TO flyway_user;
--创建迁移器角色
创建角色模式\u migrator;
将数据库上的所有权限授予schema_migrator;
向SCHEMA_migrator授予模式上的所有权限;
向SCHEMA_migrator授予模式中所有表的所有权限;
更改模式中的默认权限将表上的所有权限授予模式_migrator;
向SCHEMA_migrator授予模式中所有序列的所有权限;
更改模式中的默认权限将序列上的所有权限授予模式_migrator;
--将角色分配给flyway\u用户
将schema_migrator授予flyway_用户;

谢谢,这帮了大忙。我想指出的是,如果您想使用迁移用户更改其他用户的权限(例如,在迁移之前/之后的脚本中),您需要将
with GRANT OPTION
添加到GRANT ALL和ALTER命令中,并将
with ADMIN OPTION
添加到GRANT schema\u migrator命令中。