我正在使用下面的代码创建postgres用户。它工作正常。
- name: create database user
become_user: postgres
postgresql_user: db={{ db_name }} name=username password=userpassword priv=CONNECT encrypted=yes state=present
但是,我希望此用户只给予只读访问权限。我希望只授予对公共模式中的表的选择操作。我可以使用以下查询来完成此操作
CREATE USER rouser WITH PASSWORD 'pass';
GRANT CONNECT ON DATABASE mydb TO rouser;
GRANT USAGE ON SCHEMA public TO rouser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO rouser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO rouser;
我可以使用创建此类用户
- name: modify user role
become_user: postgres
postgresql_privs:
db: mydb
role: qarouser
objs: ALL_IN_SCHEMA
privs: SELECT
然而,当我在同一个数据库中使用不同的用户创建一个新表时,这个用户没有对不同用户创建的表的选择访问权限,我该如何解决这个问题?
1条答案
按热度按时间6rqinv9w1#
您已经有了修改用户角色任务,该任务可以访问当前对象,但缺少语句中的ALTER DEFAULT PRIVS...部分。您可以在此处获得更多示例和更好的解释。特别是添加SELECT和USAGE的示例(已修改以供您使用):
我只是不得不在我自己的剧本中处理它,并在寻找它时发现了你的问题。我不是DBA,也不在电视上扮演DBA。我没有住过任何能让我合格的豪华酒店。