如果我登录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没有任何错误日志,所以我看不出是否有任何错误被提交。
答案 0 :(得分:1)
您无法在RDS上使用root
用户,该用户是为亚马逊服务层保留的。您应该引用在创建RDS实例时指定的RDS“主用户”名称。这是您的默认主用户,具有大多数服务器级权限。 See this link for more info on privileges granted to the master user.
良好的数据库实践会使您不使用“root”用户或其最接近的RDS等效于特定应用程序的“主用户”。您真的应该考虑使用适当的权限定义特定于应用程序的用户,以仅执行应用程序需要执行的操作。