ansible 部署mysql 8并修改原始密码
时间: 2023-12-28 09:03:51 浏览: 29
可以使用Ansible的mysql_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的服务器。