mysql - 无法从 Rails 更新 RDS 数据库

标签 mysql ruby-on-rails amazon-web-services rds

如果我登录 mysql 终端,我就可以对 RDS 数据库进行任何我想要的更新或添加。但是,当我从 Rails 控制台使用 Active Record 时,我只能访问数据,而不能更新或销毁数据。

我似乎拥有正确的补助金:

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX,
  ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION
  CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, 
  TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD'*XXXXX' WITH GRANT OPTION |

我的database.yml看起来像:

development:
  host: XXXX.YYYY.us-east-1.rds.amazonaws.com
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: filemaker
  pool: 5
  username: root
  password: ZZZZZ

当我尝试更新记录时,现在返回 false:

>> Section.first.update_column(:craigslist_posts, 1)
   Section Load (101.6ms)  SELECT `sections`.* FROM `sections` LIMIT 1
   SQL (49.9ms)  UPDATE `sections` SET `craigslist_posts` = 1 WHERE `sections`.`_id`=    
   4470
=> false 

我已经关闭了whitelist_attributes,认为这可能与此有关。由于RDS没有任何错误日志,因此我无法查看是否有任何错误发生。

最佳答案

您不能在 RDS 上使用 root 用户,该用户是为 Amazon 服务层保留的。您应该引用创建 RDS 实例时指定的 RDS“主用户”名称。这是您的默认主用户,拥有大多数服务器级别的权限。 See this link for more info on privileges granted to the master user.

良好的数据库实践不会让您对特定应用程序使用“root”用户或其最接近的 RDS 等效项“主用户”。您确实应该考虑为特定于应用程序的用户定义适当的权限,以仅执行应用程序需要执行的操作。

关于mysql - 无法从 Rails 更新 RDS 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605437/

相关文章:

amazon-web-services - 如何构建AWS CDK以进行产品开发

MySQL 从具有不同列号的多个表中选择

php - 如何将JavaScript变量的值插入数据库

java - 为命名对象创建正则表达式验证

ruby-on-rails - rails : when to use self

ruby-on-rails - 如何在使用 Rails 3.x 时自定义 Twitter Bootstrap ?

amazon-web-services - Appsync VTL foreach 循环限制为 101

php - 调用未定义的方法 Illuminate\Database\Query\Builder::has_many()

mysql - 为什么 sql 查询选择不必要的值?

ruby-on-rails - 在销毁相关模型更新之前,错误不会传播