我正在尝试在AWS RDS Postgres实例中启用一些Postgres扩展。
1)我尝试使用rails迁移进行部署,但在localhost中工作很有魅力。
class InstallPgTrgmContribPackage < ActiveRecord::Migration[5.1]
def change
enable_extension "fuzzystrmatch"
enable_extension "pg_trgm"
enable_extension "unaccent"
# execute "CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;"
# execute "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
# execute "CREATE EXTENSION IF NOT EXISTS unaccent;"
end
end
2)此外,尝试从堡垒主机进行ssh-ing并连接到postgres并从那里创建它。
psql -h blabla.us-east-1.rds.amazonaws.com -p 5432 -U prod -d prod
prod=> CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;
returns: ERROR: permission denied to create extension "fuzzystrmatch"
HINT: Must be superuser to create this extension.
默认情况下,RDS实例角色是测试,我可以创建 测试用户的扩展。我正在尝试安装prod和dev用户。
通过Elastic Beanstalk部署rails应用程序。
问题:如何将超级用户权限添加到新用户角色?
答案 0 :(得分:2)
看起来prod用户没有超级用户权限:
如AWS Docs所述:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html
1. create role testuser with password 'testuser' login;
CREATE ROLE
2. grant rds_superuser to testuser;
GRANT ROLE
点1已经完成,因为有一个prod用户
因此,您需要运行第2点命令来授予权限。