Bạn có thể sử dụng sai ~ / .my.cnf để có thể thay đổi mật khẩu gốc mysql.
Mẹo nhỏ là có một nhiệm vụ "Đặt mật khẩu gốc" (nr.1), sẽ đặt mật khẩu. Sau đó, bạn có một nhiệm vụ, tạo ra một ~ / .my.cnf với thông tin xác thực chính xác (nr.2).
Trên một hệ thống mới, ~ / .my.cnf không có mặt. Tác vụ nr.1 sẽ tạo người dùng gốc mysql với thông tin xác thực. Trên một hệ thống hiện tại, thông tin đăng nhập từ ~ / .my.cnf được sử dụng để đăng nhập và đặt mật khẩu thành mysql_root_password . Nhiệm vụ nr.2 sẽ tạo ~ / .my.cnf , hoặc ghi lại các thông tin cũ hiện có ~ / .my.cnf với các thông tin mới.
Ưu điểm lớn của phương pháp này là chỉ có một biến "mysql_root_password", đây luôn là biến chính xác theo quan điểm của một cuốn sách. Trên (các) hệ thống hiện tại, ~ / .my.cnf là loại lưu trữ cho thông tin xác thực mysql hiện tại.
- name: Set root user password
# If .my.cnf already exists, this will cause an mysql-root-password update.
mysql_user:
name: root
password: "{{ mysql_root_password}}"
check_implicit_admin: true
- name: Create .my.cnf
template:
src: "client.my.cnf.j2"
dest: "/root/.my.cnf"
owner: root
group: root
mode: 0600
với client.my.cnf.j2:
[client]
user=root
password={{ mysql_root_password }}
đọc thêm
Các ghi chú có liên quan từ tài liệu ansible-mysql_user_module :
Lưu ý1:
Để bảo mật người dùng này như một phần của một playbook bình thường, bạn phải tạo ít nhất hai tác vụ: đầu tiên phải thay đổi mật khẩu của người dùng root, mà không cung cấp bất kỳ chi tiết login_user / login_password nào. Thứ hai phải loại bỏ tệp ~ / .my.cnf chứa thông tin xác thực gốc mới. Các lần chạy tiếp theo của playbook sau đó sẽ thành công bằng cách đọc thông tin đăng nhập mới từ tệp. ansible-mysql_user_module, ghi chú
Lưu ý 2:
Cả login_password và login_user đều được yêu cầu khi bạn chuyển thông tin đăng nhập. Nếu không có mặt, mô-đun sẽ cố gắng đọc thông tin đăng nhập từ ~ / .my.cnf, và cuối cùng quay lại sử dụng thông tin đăng nhập mặc định của 'root' không có mật khẩu. ansible-mysql_user_module, ghi chú
mysqladmin