Rails & AWS Cloud 9 上的 Postgresql:角色 "ec2-user" 不存在

Rails & Postgresql on AWS Cloud 9 : role "ec2-user" does not exist

我正在尝试使用 AWS Cloud9 启动我的 Rails 环境和 运行 Postgres 数据库,并且 运行 在尝试 运行 [=13] 时遇到问题=].

最初我通过 运行ning 创建项目:

  1. rails 新 app_name -d postgresql
  2. 捆绑安装

Bundler 在查找 gem 'pg' 时遇到问题,所以我 运行:

  1. sudo yum install postgresql-devel
  2. sudo yum install postgresql-server
  3. sudo postgresql initdb
  4. sudo 服务 postgresql 启动

之后服务器正常启动,我认为一切都很好,直到 运行ning rails db:migrate 返回错误:

PG::ConnectionBad: FATAL: 角色 "ec2-user" 不存在

我不确定如何解决这个问题。

有人建议我可能需要进入我的 psql shell 并更改或创建一个新角色,但我不确定如何更改 ec2-user.

有人建议我的 pg_hba.conf 文件可能需要一些改动。我有那个文件的路径,但不确定如何编辑它,或者这是否是我真正想做的事情。

有什么建议吗?我在下面包括了我的 database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: my_app_development

test:
  <<: *default
  database: my_app_test

production:
  <<: *default
  database: my_app_production
  username: my_app
  password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>

psql 的每个用户还需要一个与其名称匹配的相应数据库。

在bash命令行:

sudo -u postgres createuser -s ec2-user
sudo -u postgres createdb ec2-user

以上应该允许您的用户访问 psql,但还不允许 rails 进行迁移。您必须先执行以下操作:

sudo su postgres
psql
ALTER USER "ec2-user" WITH SUPERUSER;
\q
exit

我很快就整理好了,所以如果您 运行 遇到任何问题,请告诉我。

如果您的 config/database.yml 使用与 bash 用户不同的登录用户,您也应该为该用户重复上述所有步骤。

最后,虽然您使用的是 Cloud9,但这只是一个简单的 Rails/Postgres 问题,而不是 AWS 问题。