Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 来自Rails应用程序的AWS RDS数据库-从根用户切换到IAM用户时出错_Ruby On Rails_Postgresql_Amazon Web Services_Heroku_Amazon Iam - Fatal编程技术网

Ruby on rails 来自Rails应用程序的AWS RDS数据库-从根用户切换到IAM用户时出错

Ruby on rails 来自Rails应用程序的AWS RDS数据库-从根用户切换到IAM用户时出错,ruby-on-rails,postgresql,amazon-web-services,heroku,amazon-iam,Ruby On Rails,Postgresql,Amazon Web Services,Heroku,Amazon Iam,我正在从我正在开发的rails应用程序访问AWS上的RDS-PostgreSQL数据库。目前,我正在使用我的AWSroot凭据访问数据库 在my数据库.yml中: pg_development: <<: *pg_default adapter: postgresql database: myDatabase username: myRootUsername password: myRootPassword host: myDatabase.1234.us-ea

我正在从我正在开发的
rails
应用程序访问
AWS
上的
RDS-PostgreSQL
数据库。目前,我正在使用我的
AWS
root凭据访问数据库

在my
数据库.yml
中:

pg_development:
  <<: *pg_default
  adapter: postgresql
  database: myDatabase
  username: myRootUsername
  password: myRootPassword
  host: myDatabase.1234.us-east-1.rds.amazonaws.com
pgu开发:

您正在混合IAM用户和数据库用户

IAM用户是AWS内的用户(例如,可以登录到管理控制台,或使用SDK功能启动ec2 Instance、创建RDS数据库、将数据写入S3等)

启动RDS实例时,必须指定管理员/root用户名和密码。我猜这是有效的用户名和密码(请注意,此用户名和密码不能识别IAM用户)


如果您想缩小应用程序对数据库的访问范围,则需要在RDS PostgreSQL本身内部创建一个新的数据库用户(使用某种Postgre GUI,或通过连接Postgre数据库并发出“创建用户”命令)。

您将IAM用户与数据库用户混合使用

IAM用户是AWS内的用户(例如,可以登录到管理控制台,或使用SDK功能启动ec2 Instance、创建RDS数据库、将数据写入S3等)

启动RDS实例时,必须指定管理员/root用户名和密码。我猜这是有效的用户名和密码(请注意,此用户名和密码不能识别IAM用户)


如果您想缩小应用程序的数据库访问范围,则需要在RDS PostgreSQL本身内部创建一个新的数据库用户(使用某种Postgre GUI,或通过连接Postgre数据库并发出create user)。

很可能是您的策略或IAM设置有问题。到目前为止,这不是世界上最直观的事情,而且有很多地方很容易犯错误。我建议重新执行所有步骤并记录下来,如果仍然不起作用,请将步骤张贴在此处,供其他人查看。谢谢。因此,您确认我应该能够使用密码(用于登录AWS平台),这是我在我的应用程序中作为身份验证密码所需的全部吗?和我对root用户的看法一样。一点也不。理想情况下,您应该设置IAM用户以访问DB.Right。我要说的是,我创建了一个IAM用户,IAM用户将拥有一个密码,我将使用IAM用户的密码作为访问数据库的身份验证。如果我不使用root用户,我只是想确保我不必使用密码以外的任何东西进行身份验证。Postgres根本不知道IAM用户。IAM用户只能用于调用AWS API方法,不能用于登录RDS数据库。很可能是您的策略或IAM设置有问题。到目前为止,这不是世界上最直观的事情,而且有很多地方很容易犯错误。我建议重新执行所有步骤并记录下来,如果仍然不起作用,请将步骤张贴在此处,供其他人查看。谢谢。因此,您确认我应该能够使用密码(用于登录AWS平台),这是我在我的应用程序中作为身份验证密码所需的全部吗?和我对root用户的看法一样。一点也不。理想情况下,您应该设置IAM用户以访问DB.Right。我要说的是,我创建了一个IAM用户,IAM用户将拥有一个密码,我将使用IAM用户的密码作为访问数据库的身份验证。如果我不使用root用户,我只是想确保我不必使用密码以外的任何东西进行身份验证。Postgres根本不知道IAM用户。IAM用户只能用于调用AWS API方法,不能用于登录RDS数据库。这是我的问题。谢谢你为我节省了很多时间,这是我的问题。谢谢你为我节省了很多时间。