代码之家  ›  专栏  ›  技术社区  ›  7urkm3n Neeraj Kumar

AWS RDS扩展安装

  •  3
  • 7urkm3n Neeraj Kumar  · 技术社区  · 8 年前

    我试图在AWS RDS Postgres实例中为特定用户启用一些Postgres扩展。

    1) 我尝试过使用rails迁移进行部署,但没有成功。

    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将其导入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实例角色是test,我可以创建 测试用户中的扩展。我正在尝试在prod和dev用户中安装。

    enter image description here

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

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

    1 回复  |  直到 5 年前
        1
  •  3
  •   Rohan    8 年前

    prod用户似乎没有超级用户权限:

    如AWS文件所述:

    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用户

    因此,您需要运行point 2命令来授予特权。

    推荐文章