0

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にはエラーログがないため、コミットされているエラーがあるかどうかを確認できません。

4

1 に答える 1

1

rootAmazon サービス レイヤー用に予約されている RDS でユーザーを使用することはできません。RDS インスタンスの作成時に指定した RDS の「マスター ユーザー」名を参照する必要があります。これは、ほとんどのサーバー レベルの権限を持つデフォルトのマスター ユーザーです。 マスター ユーザーに付与される権限の詳細については、このリンクを参照してください。

適切なデータベース プラクティスでは、特定のアプリケーションに対して「ルート」ユーザーまたはそれに最も近い RDS 相当の「マスター ユーザー」を使用しないようにします。アプリケーションが実行する必要があることだけを実行できるように、適切な権限を持つアプリケーション固有のユーザーを定義することを検討する必要があります。

于 2012-09-26T17:38:23.807 に答える