首页 > 解决方案 > 如何在ansible playbook中使用密码执行mysql查询

问题描述

Ansible 剧本:

情况1

- name: case 1
  command: mysql -u root -p "MyNewPass_123" --execute="show databases;"

结果:

 "stdout_lines": ["Please use --connect-expired-password option or invoke mysql in interactive mode."]

如果我在命令中添加“--connect-expired-password”,我会收到以下错误

ERROR 1820 (HY000) at line 1: You must reset your password using ALTER USER statement before executing this statement."

案例2

- name: case 2
  command: mysql -u root -p --execute="show databases;"

结果:Playbook 等待输入密码。

我该怎么做?

标签: mysqllinuxansible

解决方案


首先安装galaxy collection:

ansible-galaxy collection install community.mysql

之后就可以使用模块了community.mysql.mysql_query

- name: Select query to db acme with positional arguments
  community.mysql.mysql_query:
    login_user: root
    login_password: MyNewPass_123
    login_db: ${DB_TO_USE}
    query: SELECT * FROM table WHERE id = %s AND param = %s
    positional_args:
    - 1
    - test

有关详细信息,请参阅: https ://docs.ansible.com/ansible/latest/collections/community/mysql/mysql_query_module.html


推荐阅读