Note
This module is part of the community.mysql collection (version 3.15.0).
You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.mysql. You need further requirements to be able to use this module, see Requirements for details.
To use it in a playbook, specify: community.mysql.mysql_info.
The below requirements are needed on the host that executes this module.
Parameter | Comments |
|---|---|
ca_cert aliases: ssl_ca path | The path to a Certificate Authority (CA) certificate. This option, if used, must specify the same certificate as used by the server. |
check_hostname boolean added in community.mysql 1.1.0 | Whether to validate the server host name when an SSL connection is required. Corresponds to MySQL CLIs Setting this to Requires pymysql >= 0.7.11. Choices:
|
client_cert aliases: ssl_cert path | The path to a client public key certificate. |
client_key aliases: ssl_key path | The path to the client private key. |
config_file path | Specify a config file from which user and password are to be read. The default config file, The default config file, To prevent the default config file from being read, set config_file to be an empty string. Default: |
connect_timeout integer | The connection timeout when connecting to the MySQL server. Default: |
exclude_fields list / elements=string added in community.mysql 0.1.0 | List of fields which are not needed to collect. Supports elements: |
filter list / elements=string | Limit the collected information by comma separated string or YAML list. Allowable values are By default, collects all subsets. You can use ‘!’ before value (for example, If you pass including and excluding values to the filter, for example, filter=!settings,version, the excluding values, |
login_db string | Database name to connect to. It makes sense if login_user is allowed to connect to a specific database only. |
login_host string | Host running the database. In some cases for local connections the login_unix_socket=/path/to/mysqld/socket, that is usually Default: |
login_password string | The password used to authenticate with. |
login_port integer | Port of the MySQL server. Requires login_host be defined as other than localhost if login_port is used. Default: |
login_unix_socket string | The path to a Unix domain socket for local connections. Use this parameter to avoid the |
login_user string | The username used to authenticate with. |
return_empty_dbs boolean | Includes names of empty databases to returned dictionary. Choices:
|
Attribute | Support | Description |
|---|---|---|
check_mode | Support: full | Can run in check_mode and return changed status prediction without modifying target. |
Note
users_info doesn’t support MariaDB roles.ansible_python_interpreter. For more information, see https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html.login_password and login_user are required when you are passing credentials. If none are present, the module will attempt to read the credentials from ~/.my.cnf, and finally fall back to using the MySQL default login of ‘root’ with no password./root/.my.cnf) are not needed to connect to a database server, but the file exists and does not contain a [client] section, before any other valid directives, it will be read and this will cause the connection to fail, to prevent this set it to an empty string, (for example config_file: '').Please explicitly state intended protocol error, use the login_unix_socket argument, for example, login_unix_socket: /run/mysqld/mysqld.sock.~/.my.cnf) on the destination host, for example socket=/var/lib/mysql/mysql.sock.See also
Manage MySQL or MariaDB global variables.
Add or remove MySQL or MariaDB databases from a remote host.
Adds or removes a user from a MySQL or MariaDB database.
Manage MySQL or MariaDB replication.
# 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) }}"
locked: "{{ item.locked | 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'
- item.name != 'PUBLIC' # MariaDB roles are not supported
Common return values are documented here, the following are the fields unique to this module:
Key | Description |
|---|---|
connector_name string added in community.mysql 3.6.0 | Name of the python connector used by the module. When the connector is not identified, returns Returned: always Sample: |
connector_version string added in community.mysql 3.6.0 | Version of the python connector used by the module. When the connector is not identified, returns Returned: always Sample: |
databases dictionary | Information about databases. Returned: if not excluded by filter Sample: |
|
size dictionary |
Database size in bytes. Returned: if not excluded by filter Sample: |
|
tables dictionary added in community.mysql 3.11.0 |
Count of tables and views in that database. Returned: if not excluded by filter Sample: |
engines dictionary | Information about the server’s storage engines. Returned: if not excluded by filter Sample: |
global_status dictionary | Global status information. Returned: if not excluded by filter Sample: |
master_status dictionary | Master status information. Returned: if master Sample: |
server_engine string added in community.mysql 3.10.0 | Database server engine. Returned: if not excluded by filter Sample: |
settings dictionary | Global settings (variables) information. Returned: if not excluded by filter Sample: |
slave_hosts dictionary | Slave status information. Returned: if master Sample: |
slave_status dictionary | Slave status information. Returned: if standby Sample: |
users dictionary | Return a dictionnary of users grouped by host and with global privileges only. Returned: if not excluded by filter Sample: |
users_info dictionary added in community.mysql 3.8.0 | Information about users accounts. The output can be used as an input of the community.mysql.mysql_user plugin. Useful when migrating accounts to another server or to create an inventory. Does not support proxy privileges. If an account has proxy privileges, they won’t appear in the output. Causes issues with authentications plugins The “locked” field was aded in ``community.mysql`` 3.13. Returned: if not excluded by filter Sample: |
version dictionary | Database server version. Returned: if not excluded by filter Sample: |
|
full string |
Full server version. Returned: if not excluded by filter Sample: |
|
major integer |
Major server version. Returned: if not excluded by filter Sample: |
|
minor integer |
Minor server version. Returned: if not excluded by filter Sample: |
|
release integer |
Release server version. Returned: if not excluded by filter Sample: |
|
suffix string |
Server suffix, for example MySQL, MariaDB, other or none. Returned: if not excluded by filter Sample: |
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/mysql/mysql_info_module.html