Anda dapat menyalahgunakan ~ / .my.cnf karena dapat mengubah kata sandi mysql-root.
Caranya adalah dengan memiliki tugas "Setel kata sandi root" (nr.1), yang akan mengatur kata sandi. Setelah itu, Anda memiliki tugas, yang menciptakan ~ / .my.cnf dengan kredensial yang benar (nr.2).
Pada sistem baru, ~ / .my.cnf tidak ada. Tugas nr.1 akan membuat pengguna mysql-root-dengan kredensial yang diberikan. Pada sistem yang sekarang, kredensial dari ~ / .my.cnf digunakan untuk login dan mengatur kata sandi ke mysql_root_password . Tugas nr.2 akan membuat ~ / .my.cnf , atau menghapus kredensial lama yang ada ~ / .my.cnf dengan yang baru.
Keuntungan besar dari pendekatan ini adalah hanya memiliki satu variabel "mysql_root_password", yang selalu yang benar dari sudut pandang buku pedoman. Pada sistem yang sekarang, ~ / .my.cnf adalah jenis penyimpanan untuk kredensial mysql lokal saat ini.
- 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
dengan client.my.cnf.j2:
[client]
user=root
password={{ mysql_root_password }}
Bacaan lebih lanjut
Catatan yang relevan dari dokumentasi-mysql_user_module yang mungkin :
Catatan 1:
Untuk mengamankan pengguna ini sebagai bagian dari buku pedoman idempoten, Anda harus membuat setidaknya dua tugas: yang pertama harus mengubah kata sandi pengguna root, tanpa memberikan detail login_user / login_password. Yang kedua harus menghapus file ~ / .my.cnf yang berisi kredensial root baru. Selanjutnya, playbook akan berhasil dengan membaca kredensial baru dari file tersebut. ansible-mysql_user_module, catatan
Catatan 2:
Login_password dan login_user diperlukan saat Anda memberikan kredensial. Jika tidak ada, modul akan mencoba membaca kredensial dari ~ / .my.cnf, dan akhirnya kembali menggunakan login default MySQL dari 'root' tanpa kata sandi. ansible-mysql_user_module, catatan
mysqladmin- tapi ini sebelum saya melihat jawaban Anda