community.mysql.mysql_variables 模块 – 管理 MySQL 或 MariaDB 全局变量
注意
此模块是 community.mysql 集合 (版本 3.11.0) 的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.mysql
。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在剧本中使用它,请指定: community.mysql.mysql_variables
。
概要
查询/设置 MySQL 或 MariaDB 变量。
要求
执行此模块的主机需要以下要求。
PyMySQL (Python 2.7 和 Python 3.x)
参数
参数 |
注释 |
---|---|
证书颁发机构 (CA) 证书的路径。如果使用此选项,则必须指定与服务器使用的证书相同的证书。 |
|
当需要 SSL 连接时是否验证服务器主机名。对应于 MySQL CLI 的 将其设置为 需要 pymysql >= 0.7.11。 选项
|
|
客户端公钥证书的路径。 |
|
客户端私钥的路径。 |
|
指定一个配置文件,从中读取用户名和密码。 如果存在默认配置文件 如果存在默认配置文件 要防止读取默认配置文件,请将 config_file 设置为空字符串。 默认值: |
|
连接到 MySQL 服务器时的连接超时时间。 默认值: |
|
运行数据库的主机。 在某些情况下,对于本地连接,需要使用 login_unix_socket=/path/to/mysqld/socket(通常为 默认值: |
|
用于身份验证的密码。 |
|
MySQL 服务器的端口。如果使用 login_port,则需要将 login_host 定义为非 localhost。 默认值: |
|
本地连接的 Unix 域套接字的路径。 使用此参数可避免 |
|
用于身份验证的用户名。 |
|
受 MySQL 8.0 或更高版本支持。 更多信息请参见 https://dev.mysqlserver.cn/doc/refman/8.0/en/set-variable.html。 选项
|
|
要操作的变量名。 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:不支持 |
可以在 check_mode 下运行,并返回更改状态预测,而无需修改目标。 |
备注
注意
兼容 MariaDB 或 MySQL。
需要在远程主机上安装 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,则需要安装 PyMySQL 的 Python 3 版本。如果 Ansible 检测到并使用 Python 2,则需要安装 PyMySQL 的 Python 2 版本。
如果遇到问题,可以通过指定
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*(默认路径),则会导致错误“主机‘127.0.0.1’不允许连接到此 MariaDB 服务器”。
如果不需要配置文件(例如,
/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_info
收集有关 MySQL 或 MariaDB 服务器的信息。
- MySQL SET 命令参考
MySQL SET 命令文档的完整参考。
示例
# If you encounter the "Please explicitly state intended protocol" error,
# use the login_unix_socket argument
- name: Check for sync_binlog setting
community.mysql.mysql_variables:
variable: sync_binlog
login_unix_socket: /run/mysqld/mysqld.sock
- name: Set read_only variable to 1 persistently
community.mysql.mysql_variables:
variable: read_only
value: 1
mode: persist
- name: Set a boolean using ON/OFF notation
mysql_variables:
variable: log_slow_replica_statements
value: "ON" # Make sure it's quoted
返回值
常见的返回值已在 此处 记录,以下是此模块特有的字段
键 |
描述 |
---|---|
已执行的修改数据库状态的查询列表。 已返回:如果已执行 示例: |