如果我登录 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/