Rails迁移& PostgreSQL:用于迁移的单独用户和为生产用户设置权限

时间:2012-05-23 08:32:53

标签: ruby-on-rails postgresql privileges rails-migrations

我在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的脚本?

1 个答案:

答案 0 :(得分:3)

您可以使用Postgres“ALTER DEFAULT PRIVILEGES为所有新创建的表格提供automatically assign the rights production

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