Saya telah menyediakan server saya dengan buku pedoman yang dimungkinkan. Saya telah menggunakan buku pedoman root / bedrock-Ansible .
Salah satu tugasnya adalah mengatur server mysql bersama dengan kata sandi pengguna root mysql.
Sekarang saya sangat perlu mengubah kata sandi ini. Langkah-langkah yang saya ambil:
- Saya memperbarui variabel untuk peran yang memungkinkan
- Saya menjalankan perintah
ansible-playbook -i hosts/staging server.yml
untuk reprovision server
Semua tugas dieksekusi seperti yang diharapkan (tidak ada perubahan), tetapi skrip gagal
[mariadb | Set root user password]
dengan pesan ini:
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
Dugaan saya adalah bahwa setelah kata sandi root MySQL telah ditetapkan, penyediaan kembali server tidak dapat mengubah kata sandi ini.
Apakah mungkin untuk mengubah kata sandi root MySQL dengan menyediakan kembali server dengan Ansible? Apa pilihan saya?
mysqladmin
- tapi ini sebelum saya melihat jawaban AndaAnda 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.
dengan client.my.cnf.j2:
Bacaan lebih lanjut
Catatan yang relevan dari dokumentasi-mysql_user_module yang mungkin :
Catatan 1:
Catatan 2:
sumber
mysql --database mysql --execute "select host from user where user = 'root';"
. Posting ini melakukan hal yang sama dengan jawaban ini tetapi memiliki kode untuk mengatur semua kata sandi.Untuk orang berikutnya yang datang mencari jawaban di sekitar sini. Meskipun jawaban yang diterima benar, Anda harus rajin ekstra jika Anda menggunakan MySQL 5.7 karena tidak ada login anonim diizinkan di mysqld dalam mode daemonized (layanan). Alih-alih, Anda HARUS mengikis /var/log/mysqld.log untuk kata sandi TEMPORARY yang diputuskan seseorang untuk dibuat dan digunakan pada login_password = ydaetskcoR. Ini adalah fitur yang mereka putuskan untuk diterapkan pada versi 5.7 dari repositori dev jadi jika Anda ingin menghindarinya gunakan versi yang lebih lama (5.6).
Dokumentasi di sini: https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_initialize-insecure
http://mysqlserverteam.com/initialize-your-mysql-5-7-inances-with-ease/
sumber
Ada buku pedoman Ansible yang digunakan untuk pengerasan MySQL.
https://github.com/dev-sec/ansible-mysql-hardening
Ini tidak hanya mengubah kata sandi root, tetapi juga melakukan beberapa langkah tambahan untuk mengeraskan server.
Lihatlah file readme.
sumber