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

Bel*_*der 4 postgresql ruby-on-rails aws-cloud9

我正在尝试使用AWS Cloud9来使我的Rails环境和Postgres数据库一起运行,并且在尝试运行时遇到了问题rails db:migrate

最初,我通过运行以下命令创建了项目:

  1. rails new app_name -d PostgreSQL
  2. 捆绑安装

Bundler发现问题,gem 'pg'所以我跑了:

  1. sudo yum安装postgresql-devel
  2. sudo yum安装postgresql-server
  3. 须藤PostgreSQL initdb
  4. sudo服务postgresql启动

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

PG :: ConnectionBad:FATAL:角色 “EC2用户” 不存在

我不确定如何解决此问题。

已经建议我可能需要进入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'] %>
Run Code Online (Sandbox Code Playgroud)

Fel*_*tis 5

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

在bash命令行上:

sudo -u postgres createuser -s ec2-user
sudo -u postgres createdb ec2-user
Run Code Online (Sandbox Code Playgroud)

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

sudo su postgres
psql
ALTER USER "ec2-user" WITH SUPERUSER;
\q
exit
Run Code Online (Sandbox Code Playgroud)

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

If your config/database.yml is using a different login user to your bash user, you should repeat all above steps for that user as well.

Lastly, although you are on Cloud9, this is just a simple Rails/Postgres issue, rather than an AWS issue.