mysql - 如何在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 等待输入密码。
我该怎么做?
解决方案
首先安装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
推荐阅读
- python - 在同一文件中将字符串从一种方法发送到另一种方法时无法解码 utf8
- local-storage - 本地存储更新车总计
- fft - Kiss FFT:逆 2D 变换后跟前向变换给出错误的结果
- amazon-web-services - Cloudwatch 日志事件聚合模式?
- elasticsearch - 基于二和条件过滤文本以获取 logstash 配置的 if 条件
- ios - 如何在 iOS 12.2 中更改导航栏高度?
- vba - 我如何单击允许弹出对话框,使用 VBA 在 Internet Explorer 中另存为对话框
- google-sheets - 为什么我的 vlookup 值填充到行而不是列?
- java - Java ArrayList.toArray 不起作用 - 返回某种类型的引用
- c# - 安全特权服务 <=> 用户空间命名管道 WCF-Connection