3

postgresqlに2人のユーザーがいますが、そのうちの1人はmigration、Railsが本番サーバーで移行を実行するときに呼び出されて使用されます。このユーザーは本番データベースを所有しています。またproduction、次の権限のみを持つことになっているユーザーがいSELECT, INSERT, UPDATE, DELETEます。本番データベース。

問題は、新しいテーブルが作成されるたびに、これをpsqlで手動で実行する必要があることです。

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO production;

-- next line is needed for each new table which has an auto incrementing field, in this case - table `users`
GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO production;

新しく作成されたテーブルに対するユーザーの権限はproduction自動的に設定されないためです。移行を実行するときに自動的にそれを行うための最良の方法は何ですか?Rails / Capistranoで利用できるスクリプトはありますか?

4

1 に答える 1

3

Postgresを使用ALTER DEFAULT PRIVILEGESして、新しく作成されたすべてのテーブルの本番環境への権限を自動的に割り当てることができます。

または、カスタムCapistranoタスクを記述して、after "deploy:migrate", "mycustomtaskname"フックを介して呼び出されるアクセス許可を設定することもできます。このパスティは、パスワードをインタラクティブに提供する方法など、Capistranoを介してpgsqlと対話する方法に関するいくつかの良いヒントを提供する場合があります。

于 2012-05-23T09:15:31.053 に答える