community.postgresql.postgresql_owner 模块 – 更改 PostgreSQL 数据库对象的拥有者
注意
此模块是 community.postgresql 集合 (版本 3.9.0) 的一部分。
如果您正在使用 ansible
包,则您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要更多需求才能使用此模块,有关详细信息,请参阅 需求。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_owner
。
概要
更改 PostgreSQL 数据库对象的拥有者。
还可以重新分配数据库角色拥有的数据库对象的拥有权给另一个角色。
需求
在执行此模块的主机上需要以下需求。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件名。 如果文件存在,则会验证服务器的证书是否由这些机构之一签署。 |
|
要传递给 libpg 的任何其他参数。 这些参数优先。 默认值: |
|
要连接到的数据库名称。 |
|
如果为 与 obj_name 和 obj_type 互斥。 选项
|
|
运行数据库的主机。 如果使用 默认值: |
|
此模块应用来建立其 PostgreSQL 会话的密码。 默认值: |
|
本地连接的 Unix 域套接字的路径。 默认值: |
|
此模块应用来建立其 PostgreSQL 会话的用户名。 默认值: |
|
设置为 obj_name 拥有者的角色(用户/组)。 |
|
要更改所有权的数据库对象的名称。 与 reassign_owned_by 互斥。 |
|
数据库对象的类型。 与 reassign_owned_by 互斥。 自 PostgreSQL 9.3 起可用 obj_type=matview。 自 PostgreSQL 11 起可用 obj_type=event_trigger、obj_type=procedure、obj_type=publication、obj_type=statistics 和 obj_type=routine。 选项
|
|
要连接到的数据库端口。 默认值: |
|
小心 - 指定的 db 中由此角色拥有的所有对象的拥有权将被重新分配给 new_owner。 REASSIGN OWNED 通常用于准备删除一个或多个角色。 REASSIGN OWNED 不会影响其他数据库中的对象。 在包含由要删除的角色拥有的对象的每个数据库中执行此命令。 如果角色存在,则始终返回 changed 为 True。 无法重新分配数据库系统所需的对象的拥有权。 与 |
|
连接后切换到 session_role。指定的 session_role 必须是当前 login_user 属于的角色。 SQL 命令的权限检查就像 session_role 是最初登录的角色一样进行。 |
|
指定客户端 SSL 证书的文件名。 |
|
指定客户端证书使用的密钥的位置。 |
|
确定是否以及以何种优先级与服务器协商安全的 SSL TCP/IP 连接。 更多关于模式的信息,请参见 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。 默认值为 选项
|
|
如果为 只有当可能通过这些参数进行 SQL 注入时,使用 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。 |
备注
注意
不支持函数重载,因此当 obj_type 为
aggregate
、function
、routine
或procedure
时,obj_name 被认为是同类型且具有相同名称的唯一对象。尽管不支持函数重载,但当 obj_type=aggregate 时,obj_name 必须包含聚合签名,因为 SQL 语法需要它。
如果 obj_type 为
event_type
或foreign_data_wrapper
,则 new_owner 必须是超级用户。要管理订阅所有权,请使用
community.postgresql.postgresql_subscription
模块。默认身份验证假设您正在以主机上的
postgres
帐户登录或使用 sudo 命令登录。为避免“Peer authentication failed for user postgres”错误,请使用 postgres 用户作为 become_user。
此模块使用
psycopg
,这是一个 Python PostgreSQL 数据库适配器。在使用此模块之前,必须确保主机上安装了psycopg2 >= 2.5.1
或psycopg3 >= 3.1.8
。如果远程主机是 PostgreSQL 服务器(这是默认情况),则远程主机上也必须安装 PostgreSQL。
对于基于 Ubuntu 的系统,在使用此模块之前,请在远程主机上安装
postgresql
、libpq-dev
和python3-psycopg2
包。
另请参见
另请参见
- community.postgresql.postgresql_user
创建、修改或删除 PostgreSQL 服务器实例中的用户(角色)。
- community.postgresql.postgresql_privs
授予或撤销 PostgreSQL 数据库对象的权限。
- community.postgresql.postgresql_membership
将 PostgreSQL 角色添加到组或从组中移除。
- community.postgresql.postgresql_subscription
添加、更新或删除 PostgreSQL 订阅。
- PostgreSQL REASSIGN OWNED 命令参考
PostgreSQL REASSIGN OWNED 命令文档的完整参考。
示例
# Set owner as alice for function myfunc in database bar by ansible ad-hoc command:
# ansible -m postgresql_owner -a "db=bar new_owner=alice obj_name=myfunc obj_type=function"
- name: The same as above by playbook
community.postgresql.postgresql_owner:
db: bar
new_owner: alice
obj_name: myfunc
obj_type: function
- name: Set owner as bob for table acme in database bar
community.postgresql.postgresql_owner:
db: bar
new_owner: bob
obj_name: acme
obj_type: table
- name: Set owner as alice for view test_view in database bar
community.postgresql.postgresql_owner:
db: bar
new_owner: alice
obj_name: test_view
obj_type: view
- name: Set owner as bob for tablespace ssd in database foo
community.postgresql.postgresql_owner:
db: foo
new_owner: bob
obj_name: ssd
obj_type: tablespace
- name: Reassign all databases owned by bob to alice and all objects in database bar owned by bob to alice
community.postgresql.postgresql_owner:
db: bar
new_owner: alice
reassign_owned_by: bob
- name: Reassign all databases owned by bob or bill to alice and all objects in database bar owned by bob or bill to alice
community.postgresql.postgresql_owner:
db: bar
new_owner: alice
reassign_owned_by:
- bob
- bill
返回值
常见的返回值已在此处记录 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
已执行查询的列表。 返回:成功 示例: |