community.mysql.mysql_info 模块 – 收集关于 MySQL 或 MariaDB 服务器的信息
注意
此模块是 community.mysql 集合 (版本 3.11.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.mysql
。您需要其他要求才能使用此模块,有关详细信息,请参阅 需求。
要在剧本中使用它,请指定: community.mysql.mysql_info
。
概要
收集关于 MySQL 或 MariaDB 服务器的信息。
需求
执行此模块的主机需要以下需求。
PyMySQL (Python 2.7 和 Python 3.x)
参数
参数 |
注释 |
---|---|
证书颁发机构 (CA) 证书的路径。如果使用此选项,则必须指定与服务器使用的证书相同的证书。 |
|
当需要 SSL 连接时是否验证服务器主机名。对应于 MySQL CLI 的 将其设置为 需要 pymysql >= 0.7.11。 选项
|
|
客户端公钥证书的路径。 |
|
客户端私钥的路径。 |
|
指定从中读取用户名和密码的配置文件。 如果存在,则即使未指定 *config_file*,也会读取默认配置文件 如果存在,默认配置文件 要防止读取默认配置文件,请将 *config_file* 设置为空字符串。 默认值: |
|
连接到 MySQL 服务器时的连接超时。 默认值: |
|
不需要收集的字段列表。 支持元素: |
|
通过逗号分隔的字符串或 YAML 列表限制收集的信息。 允许的值为 默认情况下,收集所有子集。 您可以在值之前使用 '!'(例如, 如果您向过滤器传递包含和排除的值,例如 *filter=!settings,version*,则排除的值(在本例中为 |
|
要连接到的数据库名称。 如果 *login_user* 仅允许连接到特定数据库,则此参数有意义。 |
|
运行数据库的主机。 在某些情况下,对于本地连接,需要使用 *login_unix_socket=/path/to/mysqld/socket*(通常为 默认值: |
|
用于身份验证的密码。 |
|
MySQL 服务器的端口。如果使用 login_port,则需要将 *login_host* 定义为 localhost 以外的值。 默认值: |
|
本地连接的 Unix 域套接字的路径。 使用此参数可以避免 |
|
用于身份验证的用户名。 |
|
将空数据库的名称包含到返回的字典中。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。 |
备注
注意
兼容MariaDB或MySQL。
计算数据库大小可能很慢,具体取决于数据库中表的数量和大小。为避免这种情况,请使用exclude_fields=db_size。
需要在远程主机上安装PyMySQL (Python 2.7和Python 3.X)包。可以使用apt-get install python-pymysql (Ubuntu;参见 ansible.builtin.apt) 或yum install python2-PyMySQL (RHEL/CentOS/Fedora;参见 ansible.builtin.yum)安装Python包。对于较新的Fedora版本,也可以使用dnf install python2-PyMySQL;参见 ansible.builtin.dnf。
确保在Ansible发现的Python解释器所在的远程机器上安装了PyMySQL库。例如,如果Ansible发现并使用Python 3,则需要安装Python 3版本的PyMySQL。如果Ansible发现并使用Python 2,则需要安装Python 2版本的PyMySQL。
如果遇到问题,可以通过指定
ansible_python_interpreter
来强制Ansible使用所需的Python解释器。更多信息,请参见 https://docs.ansible.org.cn/ansible/latest/reference_appendices/interpreter_discovery.html。当您传递凭据时,
login_password
和login_user
都是必需的。如果两者都不存在,模块将尝试从~/.my.cnf
读取凭据,最后回退到使用MySQL默认登录名“root”且不使用密码。如果本地连接出现问题,使用login_unix_socket=/path/to/mysqld/socket代替login_host=localhost可能会有所帮助。例如,10.4及更高版本的MariaDB默认安装使用unix_socket身份验证插件,如果不使用login_unix_socket=/var/run/mysqld/mysqld.sock(默认路径),则会导致错误“Host ‘127.0.0.1’ is not allowed to connect to this MariaDB server”。
如果不需要配置文件(例如
/root/.my.cnf
)中的凭据来连接到数据库服务器,但该文件存在且在任何其他有效指令之前不包含[client]
部分,则它将被读取,这将导致连接失败。为了防止这种情况,请将其设置为一个空字符串(例如config_file: ''
)。为避免
Please explicitly state intended protocol
错误,请使用login_unix_socket参数,例如login_unix_socket: /run/mysqld/mysqld.sock
。或者,为了避免在每次调用时都使用login_unix_socket参数,您可以使用目标主机上的MySQL配置文件(通常为
~/.my.cnf
)中的`socket`选项指定套接字路径,例如socket=/var/lib/mysql/mysql.sock
。
另请参见
另请参见
- community.mysql.mysql_variables
管理MySQL或MariaDB全局变量。
- community.mysql.mysql_db
从远程主机添加或删除MySQL或MariaDB数据库。
- community.mysql.mysql_user
从MySQL或MariaDB数据库添加或删除用户。
- community.mysql.mysql_replication
管理MySQL或MariaDB复制。
示例
# Display info from mysql-hosts group (using creds from ~/.my.cnf to connect):
# ansible mysql-hosts -m mysql_info
# Display only databases and users info:
# ansible mysql-hosts -m mysql_info -a 'filter=databases,users'
# Display all users privileges:
# ansible mysql-hosts -m mysql_info -a 'filter=users_info'
# Display only slave status:
# ansible standby -m mysql_info -a 'filter=slave_status'
# Display all info from databases group except settings:
# ansible databases -m mysql_info -a 'filter=!settings'
# If you encounter the "Please explicitly state intended protocol" error,
# use the login_unix_socket argument
- name: Collect all possible information using passwordless root access
community.mysql.mysql_info:
login_user: root
login_unix_socket: /run/mysqld/mysqld.sock
- name: Get MySQL version with non-default credentials
community.mysql.mysql_info:
login_user: mysuperuser
login_password: mysuperpass
filter: version
- name: Collect all info except settings and users by root
community.mysql.mysql_info:
login_user: root
login_password: rootpass
filter: "!settings,!users"
- name: Collect info about databases and version using ~/.my.cnf as a credential file
become: true
community.mysql.mysql_info:
filter:
- databases
- version
- name: Collect info about databases and version using ~alice/.my.cnf as a credential file
become: true
community.mysql.mysql_info:
config_file: /home/alice/.my.cnf
filter:
- databases
- version
- name: Collect info about databases including empty and excluding their sizes
become: true
community.mysql.mysql_info:
config_file: /home/alice/.my.cnf
filter:
- databases
exclude_fields: db_size
return_empty_dbs: true
- name: Clone users from one server to another
block:
# Step 1
- name: Fetch information from a source server
delegate_to: server_source
community.mysql.mysql_info:
filter:
- users_info
register: result
# Step 2
# Don't work with sha256_password and cache_sha2_password
- name: Clone users fetched in a previous task to a target server
community.mysql.mysql_user:
name: "{{ item.name }}"
host: "{{ item.host }}"
plugin: "{{ item.plugin | default(omit) }}"
plugin_auth_string: "{{ item.plugin_auth_string | default(omit) }}"
plugin_hash_string: "{{ item.plugin_hash_string | default(omit) }}"
tls_requires: "{{ item.tls_requires | default(omit) }}"
priv: "{{ item.priv | default(omit) }}"
resource_limits: "{{ item.resource_limits | default(omit) }}"
column_case_sensitive: true
state: present
loop: "{{ result.users_info }}"
loop_control:
label: "{{ item.name }}@{{ item.host }}"
when:
- item.name != 'root' # In case you don't want to import admin accounts
- item.name != 'mariadb.sys'
- item.name != 'mysql'
返回值
常用返回值已在此处记录,以下是此模块独有的字段
键 |
描述 |
---|---|
模块使用的Python连接器的名称。当连接器未识别时,返回 返回:始终返回 示例: |
|
模块使用的Python连接器的版本。当连接器未识别时,返回 返回:始终返回 示例: |
|
关于数据库的信息。 返回:如果未被过滤器排除 示例: |
|
数据库大小(字节)。 返回:如果未被过滤器排除 示例: |
|
该数据库中表和视图的数量。 返回:如果未被过滤器排除 示例: |
|
关于服务器存储引擎的信息。 返回:如果未被过滤器排除 示例: |
|
全局状态信息。 返回:如果未被过滤器排除 示例: |
|
主服务器状态信息。 返回:如果是主服务器 示例: |
|
数据库服务器引擎。 返回:如果未被过滤器排除 示例: |
|
全局设置(变量)信息。 返回:如果未被过滤器排除 示例: |
|
从服务器状态信息。 返回:如果是主服务器 示例: |
|
从服务器状态信息。 返回:如果是备用服务器 示例: |
|
返回按主机分组且仅包含全局权限的用户字典。 返回:如果未被过滤器排除 示例: |
|
关于用户帐户的信息。 输出可以作为community.mysql.mysql_user插件的输入使用。 在将帐户迁移到另一台服务器或创建清单时很有用。 不支持代理权限。如果帐户具有代理权限,则它们不会出现在输出中。 与身份验证插件 返回:如果未被过滤器排除 示例: |
|
数据库服务器版本。 返回:如果未被过滤器排除 示例: |
|
完整服务器版本。 返回:如果未被过滤器排除 示例: |
|
主服务器版本。 返回:如果未被过滤器排除 示例: |
|
次要服务器版本。 返回:如果未被过滤器排除 示例: |
|
发行版服务器版本。 返回:如果未被过滤器排除 示例: |
|
服务器后缀,例如MySQL、MariaDB、其他或无。 返回:如果未被过滤器排除 示例: |