来自puppetlabs的官方 postgresql 模块允许授予对特定数据库的权限。
postgresql::database_grant{'grant to myuser':
privilege => 'CREATE',
db => 'app_production',
role => 'myuser',
}
这将执行:
GRANT ${privilege} ON database ${db} TO ${role};
但是我想对给定用户的全局权限执行查询:
ALTER role myuser login createdb;
有办法做到这一点吗?或者我应该为 PostgreSQL 使用不同的人偶模块吗?
对我有用的解决方案是使用' postgresql::server::role '和createdb => true而不是'postgresql::database_grant'。这是有道理的,因为您想改变用户的全局行为,而不是与特定数据库相关的行为。
这是一个示例指令,它添加了用户以及 createdb 权限:
给定“vagrant”作为用户名,这是预期的输出:
重要提示:如果您使用该模块的版本 2,则可以使用 postgresql::role 而不是 postgresql::server::role。请参阅https://forge.puppetlabs.com/puppetlabs/postgresql#upgrading