我正在RDS PostgreSQL
我正在开发的AWS
应用中访问rails
数据库。目前,我使用AWS
root凭据访问数据库。
在我的database.yml
:
pg_development:
<<: *pg_default
adapter: postgresql
database: myDatabase
username: myRootUsername
password: myRootPassword
host: myDatabase.1234.us-east-1.rds.amazonaws.com
在制作中,它们存储在Heroku
配置变量中。
这与我的root凭据完美配合。然后,我设置了一个IAM用户和组以提高安全性。我已经批准了我能想到的每一项政策。我尽我所能跟随http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.html ......
在我的开发环境中,我看到导轨错误PG::ConnectionBad FATAL: password authentication failed for user "myIAMuser"
在我的Heroku
日志中,它显示Completed 500 Internal Server Error in 59ms (ActiveRecord: 1.3ms)
以及我在开发中看到的相同致命错误。
我之前从未使用IAM
,我希望我只是犯了一个简单的错误,传递凭据的方法与IAM
不同。
我已经尝试重新启动服务器,切换回root以确保我没有弄乱任何其他因素导致错误,rake db:migrate
,无法想到会导致此错误的任何其他内容
答案 0 :(得分:2)
您正在将IAM用户与数据库用户混合......
IAM用户是AWS内的用户(例如,可以登录管理控制台,或使用SDK功能启动ec2实例,创建RDS数据库,向S3写入数据等)。
启动RDS实例时,必须指定admin / root用户名和密码。我的猜测是这是有用的用户名和密码(请注意,此用户名和密码不能识别IAM用户)。
如果要缩小应用程序的数据库访问范围,则需要在RDS PostgreSQL本身内部创建一个新的数据库用户(使用某种类型的Postgre GUI,或者连接Postgre数据库并发出CREATE USER)。