Khi mysql-server
được cài đặt không cần thiết, không có mật khẩu. Do đó, để tạo ra .my.cnf
hoạt động, nó phải có một dòng mật khẩu trống. Đây là những gì tôi đã kiểm tra với .my.cnf
:
[client]
user=root
password=
Cũng hơi lạ khi đặt .my.cnf
trong vagrant
của bạn thư mục người dùng do root sở hữu và chỉ có thể đọc được với quyền root.
Sau khi đảm bảo mật khẩu trống trong .my.cnf
, Tôi đã có thể đặt đúng mật khẩu cho root trong bốn ngữ cảnh đó. Lưu ý rằng nó không thể chạy sau đó, vì .my.cnf
cần được cập nhật, vì vậy nó không thành công trong bài kiểm tra độ tin cậy.
Có một ghi chú trên trang mô-đun mysql_user không thể truy cập được đề xuất viết mật khẩu và sau đó viết .my.cnf
tập tin. Nếu bạn làm điều đó, bạn cần một where
mệnh đề tới mysql_user
hành động (có thể là với một thống kê tệp trước đó).
Thanh lịch hơn nữa là sử dụng check_implicit_admin
cùng với login_user
và login_password
. Điều đó thật tuyệt vời.
Theo cách thứ ba, có lẽ check_implicit_admin
làm cho nó thậm chí còn dễ dàng hơn.
Đây là playbook thành công của tôi hiển thị ở trên, được thử nghiệm với một vài máy chủ mới. Kinda tự hào về điều này. Lưu ý .my.cnf
là không cần thiết cho tất cả những điều này.
---
- hosts: mysql
vars:
mysql_root_password: fart
tasks:
- name: Install MySQL
apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
sudo: yes
with_items:
- python-mysqldb
- mysql-server
#- name: copy cnf
# copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
# sudo: yes
- name: Start the MySQL service
sudo: yes
service:
name: mysql
state: started
enabled: true
- name: update mysql root password for all root accounts
sudo: yes
mysql_user:
name: root
host: "{{ item }}"
password: "{{ mysql_root_password }}"
login_user: root
login_password: "{{ mysql_root_password }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
(chỉnh sửa- đã xóa my.cnf)