3

我在 postgresql 中有两个用户,其中一个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

您可以使用 PostgresALTER DEFAULT PRIVILEGES让它自动为所有新创建的表分配生产权限。

after "deploy:migrate", "mycustomtaskname"或者,您可以编写自定义 Capistrano 任务来设置通过挂钩调用的权限。这篇文章可能会给你一些关于如何通过 Capistrano 与 pgsql 交互的好提示,例如如何以交互方式提供密码。

于 2012-05-23T09:15:31.053 回答