Установка расширения AWS RDS - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь включить некоторые расширения Postgres в экземпляре AWS RDS 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

Приложение rails развернуто через Elastic Beanstalk.

Вопрос: Как добавить привилегии суперпользователя в новую роль пользователя?

1 Ответ

0 голосов
/ 28 мая 2018

Похоже, что у пользователя 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

Таким образом, вам нужно запустить команду пункта 2 для предоставления привилегий.

...