使用Ansible管理PostgreSQL特权

时间:2019-01-09 20:00:08

标签: postgresql ansible

我已经使用Ansible Galaxy角色geerlingguy.postgresql [1]创建了一个PostgreSQL服务器。但是我对如何在PostgreSQL中创建具有以下权限的用户有些困惑:

  • 在数据库中创建表
  • 执行SELECT,INSERT,UPDATE和DELETE查询

我该如何实现?

此刻我的配置如下:

postgresql_databases:
  - name: mydb
    owner: myuser

postgresql_users:
  - name: myuser
    db: mydb
    objs: ALL_IN_SCHEMA
    privs: SELECT,INSERT,UPDATE,DELETE,CONNECT,CREATEDB
    role_attr_flags: CREATEROLE

[1]-https://galaxy.ansible.com/geerlingguy/postgresql

1 个答案:

答案 0 :(得分:0)

嗯,postgres权限模型是一团糟(...不是一团糟,只是比每个人都希望的复杂得多)。

您需要为用户配置四项独立的访问权限(不计算用户本身的创建和为网络级访问配置hg_hba.conf):

  • 数据库特权(类型:数据库)
  • 模式特权(类型:模式)
  • 表特权(类型:表)
  • 序列特权(类型:序列)

此外,当您执行此操作时,您需要具有对postgress的管理员访问权限,并且它不应是root用户(对于大多数Postgres安装,它应该是“ postgres”用户)。