首页 文章

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

提问于
浏览
1

我正在尝试使用AWS Cloud9使用Postgres数据库启动并运行我的Rails环境,并在尝试运行 rails db:migrate 时遇到问题 .

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

  • rails new app_name -d postgresql

  • bundle install

Bundler在找到 gem 'pg' 时遇到了问题所以我跑了:

  • sudo yum install postgresql-devel

  • sudo yum install postgresql-server

  • sudo postgresql initdb

  • sudo service postgresql start

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

PG::ConnectionBad: FATAL: role "ec2-user" does not exist

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

有人建议我可能需要进入我的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'] %>

1 回答

  • 1

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

    在bash命令行:

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

    以上应该允许您的用户访问 psql ,但它赢得了't let rails make migrations yet. You' ll必须首先执行以下操作:

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

    我很快把它放在一起,所以如果你遇到任何问题请告诉我 .

    如果您的 config/database.yml 正在为您的bash用户使用其他登录用户,则您还应该为该用户重复上述所有步骤 .

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

相关问题