ansible修改mysql密码_ansible使用shell模块,设置mysql的密码,但是总是提示失败

本文档记录了使用Ansible通过shell模块尝试修改MySQL密码时遇到的问题及解决过程。详细步骤包括下载安装MySQL,初始化数据库,创建服务脚本,配置文件以及设置root用户密码。在执行设置密码的命令时遇到错误,但在MySQL服务器本地执行相同命令则成功。问题可能在于Ansible的执行环境和本地环境的差异。
摘要由CSDN通过智能技术生成

1,ansible使用shell模块,设置mysql的密码,但是总是提示失败

2,代码如下:- name: Create mysql user

user:

name: mysql

create_home: no

shell: /sbin/nologin

- name: Download mysql

get_url:

url: http://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-{ {mysql_version}}-linux-glibc2.12-x86_64.tar.gz

dest: /usr/local/src

- name: Unzip mysql

unarchive:

src: /usr/local/src/mysql-{ {mysql_version}}-linux-glibc2.12-x86_64.tar.gz

dest: /usr/local/src/

copy: no

- name: Rename mysql

shell:

mv /usr/local/src/mysql-{ {mysql_version}}-linux-glibc2.12-x86_64 /usr/local/mysql && chown -R mysql:mysql { {basedir}}

- name: Create data storage

file:

path: /data/mysql

state: directory

owner: mysql

group: mysql

- name: I

可以使用Ansiblemysql_user和mysql_db模块来完成这个任务。以下是一个示例playbook: ```yaml - name: Install MySQL 8 and change root password hosts: mysql_servers become: true vars: mysql_root_password: "new_password" tasks: - name: Install MySQL 8 yum: name: mysql-community-server state: present - name: Start MySQL service service: name: mysqld state: started - name: Get temporary MySQL root password shell: grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' register: mysql_temp_password changed_when: false - name: Update root user password mysql_user: name: root host: localhost password: "{{ mysql_root_password }}" login_user: root login_password: "{{ mysql_temp_password.stdout }}" login_unix_socket: /var/lib/mysql/mysql.sock check_implicit_admin: yes update_password: always state: present - name: Remove anonymous user mysql_user: name: "" host: localhost state: absent login_user: root login_password: "{{ mysql_root_password }}" login_unix_socket: /var/lib/mysql/mysql.sock - name: Remove test database mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" login_unix_socket: /var/lib/mysql/mysql.sock ``` 在playbook中,我们使用`yum`模块安装MySQL 8,然后使用`service`模块启动MySQL服务。接下来,我们使用`shell`模块和正则表达式从MySQL的日志文件中提取临时密码。然后,我们使用`mysql_user`模块更新root用户的密码,并删除匿名用户和测试数据库。 要使用此playbook,请将其保存为文件(例如`deploy_mysql.yml`),然后使用以下命令运行: ``` ansible-playbook deploy_mysql.yml -i inventory.ini ``` 其中,`inventory.ini`是Ansible的主机清单文件,指定了要部署MySQL的服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值