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 创建项目:
- rails 新 app_name -d postgresql
- 捆绑安装
Bundler 在查找 gem 'pg'
时遇到问题,所以我 运行:
- sudo yum install postgresql-devel
- sudo yum install postgresql-server
- sudo postgresql initdb
- 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 问题。
我正在尝试使用 AWS Cloud9 启动我的 Rails 环境和 运行 Postgres 数据库,并且 运行 在尝试 运行 [=13] 时遇到问题=].
最初我通过 运行ning 创建项目:
- rails 新 app_name -d postgresql
- 捆绑安装
Bundler 在查找 gem 'pg'
时遇到问题,所以我 运行:
- sudo yum install postgresql-devel
- sudo yum install postgresql-server
- sudo postgresql initdb
- 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 问题。