7ur*_*m3n 3 ruby postgresql ruby-on-rails amazon-web-services amazon-rds
我正在尝试为 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
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
默认情况下,RDS 实例角色是 test,我可以在 test 用户中创建扩展。我正在尝试安装在 prod 和 dev 用户中。
通过 Elastic Beanstalk 部署的 Rails 应用程序。
问题:如何将超级用户权限添加到新用户角色中?
似乎 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
Run Code Online (Sandbox Code Playgroud)
第 1 点已经完成,因为有一个 prod 用户
因此,您需要运行第 2 点命令来授予权限。
| 归档时间: |
|
| 查看次数: |
4529 次 |
| 最近记录: |