AWS RDS扩展安装

时间:2018-05-28 04:06:29

标签: ruby-on-rails ruby postgresql amazon-web-services amazon-rds

我正在尝试在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用户。

enter image description here

通过Elastic Beanstalk部署rails应用程序。

问题:如何将超级用户权限添加到新用户角色?

1 个答案:

答案 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点命令来授予权限。