我需要你的帮助。对于 Postgresql 14+,使用 Terraform 向新角色授予权限不起作用。 此代码对 Postgresql 13 有效:
resource "postgresql_role" "role" {
name = "role_new_role"
password = local.readonly_password
login = true
provider = postgresql
}
resource "postgresql_grant" "grant_privileges" {
role = postgresql_role.role.name
database = each.key
schema = "public"
object_type = "table"
privileges = var.new_user_privileges
depends_on = [postgresql_role.role]
}
但从 Postgresql 14 开始,如果抛出错误:
Error: Error granting role pg_database_owner to RDS_MASTER_USER: pq: role "pg_database_owner" cannot have explicit members
pg_database_owner
是postgres中新的预定义角色
https://www.postgresql.org/docs/current/predefined-roles.html
该修复已在 1.21.0 版本中发布。因此将您的 postgres 提供程序更新到版本 1.21.0 应该可以解决该问题。 https://github.com/cyrilgdn/terraform-provider-postgresql/pull/348
postgresql = {
source = "cyrilgdn/postgresql"
version = "1.21.0"
}
有关此问题的更多信息请参见此处