无法从Rails更新RDS数据库

时间:2012-09-26 15:39:22

标签: 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

当我尝试更新记录时,我现在收到错误的回复:

>> 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没有任何错误日志,所以我看不出是否有任何错误被提交。

1 个答案:

答案 0 :(得分:1)

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

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