ruby-on-rails - AWS Cloud 9 上的 Rails 和 Postgresql : role "ec2-user" does not exist

标签 ruby-on-rails postgresql aws-cloud9

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

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

  1. rails new 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 启动

服务器随后启动良好,我认为一切都很好,直到运行 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 问题。

关于ruby-on-rails - AWS Cloud 9 上的 Rails 和 Postgresql : role "ec2-user" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210717/

相关文章:

ruby-on-rails - 缺少 spree gem,无法安装

ruby-on-rails - Ruby on Rails 不使用脚手架和生成器?

sql - Postgres - 按组分页

python-3.x - ImportError : Missing optional dependency 'S3Fs' . 处理 S3 文件需要 S3Fs 包。使用 pip 或 conda 安装 S3Fs

ruby-on-rails - 如何在 Ruby 中动态打开一个方法

ruby-on-rails - 使用 Capistrano 部署 - 仅针对匹配的服务器运行

sql - 如何像在 Railscast 340 中那样使用 datatable/will_paginate 对 “foreign” 列进行排序?

python - SQLAlchemy 名称错误 : Name 'db' is not defined (? )

ruby - 缺少要链接的主机!请提供 :host parameter, set default_url_options[:host]

python - 配置 AWS Cloud9 以使用 Anaconda Python 环境