Tidak boleh difahami

Cara Menetapkan Kata Laluan Root MySQL menggunakan Ansible

Cara Menetapkan Kata Laluan Root MySQL menggunakan Ansible
Sebilangan besar pengedaran Linux, termasuk CentOS / RHEL dan Ubuntu / Debian, tidak menetapkan kata laluan root MySQL secara automatik. Oleh kerana kata laluan root MySQL tidak ditetapkan secara automatik, seseorang dapat log masuk ke konsol MySQL sebagai root tanpa kata laluan. Ini tidak begitu baik untuk keselamatan.

Di CentOS / RHEL, anda boleh menjalankannya dengan mudah pemasangan mysql_secure_ arahan untuk menyediakan kata laluan root. Tetapi pada Ubuntu 20.04 LTS, kaedah ini tidak berfungsi, kerana MySQL menggunakan plugin pengesahan yang berbeza untuk akar pengguna.

Artikel ini akan menunjukkan kepada anda cara menetapkan kata laluan root MySQL di CentOS 8 dan Ubuntu 20.04 Pengedaran Linux LTS menggunakan modul Ansible.

Prasyarat


Sekiranya anda ingin mencuba contoh yang disertakan dalam artikel ini,

1) Anda mesti memasang Ansible di komputer anda.

2) Anda mesti mempunyai sekurang-kurangnya host CentOS / RHEL 8 atau Ubuntu 20.04 host LTS dikonfigurasi untuk automasi Ansible.

Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk memasang Ansible dan mengkonfigurasi host untuk automasi Ansible. Anda boleh melihatnya sekiranya diperlukan.

Menyiapkan Direktori Projek

Sebelum melangkah lebih jauh, kami akan menyiapkan direktori projek Ansible baru, hanya untuk memastikan semuanya teratur.

Untuk membuat direktori projek mysql-root-pass / dan semua subdirektori yang diperlukan (dalam direktori kerja semasa anda), jalankan arahan berikut:

$ mkdir -pv mysql-root-pass / buku permainan, host_vars, group_vars

Setelah direktori projek dibuat, arahkan ke direktori projek, seperti berikut:

$ cd mysql-root-lulus /

Buat a tuan rumah fail inventori, seperti berikut:

hos $ nano

Tambahkan IP host atau nama DNS CentOS / RHEL 8 atau Ubuntu 20 anda.04 LTS host dalam fail inventori (satu host setiap baris), seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah selesai, simpan fail dengan menekan + X, diikuti oleh Y dan .

Di sini, saya telah membuat dua kumpulan, centos8, dan ubuntu20. The centos8 kumpulan mempunyai nama DNS hos CentOS 8 saya, vm3.angguk.com; dan juga ubuntu20 kumpulan mempunyai nama DNS Ubuntu 20 saya.04 hos LTS, vm7.angguk.com.

Buat fail konfigurasi Ansible tidak boleh dimakan.cfg dalam direktori projek anda, seperti berikut:

$ nano tidak boleh dimakan.cfg

Taipkan baris berikut di tidak boleh dimakan.cfg fail:

[lalai]
inventori = tuan rumah
host_key_checking = Salah

Setelah selesai, simpan tidak boleh dimakan.cfg fail dengan menekan + X, diikuti oleh Y dan .

Cuba ping semua hos yang telah anda tambahkan di tuan rumah fail inventori, seperti berikut:

$ ansible all -u ansible -m ping

Seperti yang anda lihat, hos CentOS 8 saya (vm3.angguk.com) dan Ubuntu 20.04 hos LTS (vm7.angguk.com) boleh diakses.

Memasang MySQL dan Menyiapkan Kata Laluan Akar pada CentOS / RHEL 8

Bahagian ini akan menunjukkan kepada anda cara memasang pelayan pangkalan data MySQL dan menetapkan kata laluan root di CentOS 8 menggunakan Ansible. Prosedur yang sama harus dilakukan pada RHEL 8.

Buat buku main Ansible baru pasang_mysql_centos8.keladi di dalam buku permainan / direktori, seperti berikut:

Buku main $ nano / install_mysql_centos8.keladi

Taipkan baris berikut di pasang_mysql_centos8.keladi fail:

- hos: centos8
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Kemas kini cache repositori Pakej DNF
dnf:
update_cache: Betul
- name: Pasang pelayan MySQL pada CentOS 8
dnf:
nama: pelayan mysql
nyatakan: sekarang
- name: Pasang klien MySQL di CentOS 8
dnf:
nama: mysql
nyatakan: sekarang
- name: Pastikan perkhidmatan mysqld berjalan
perkhidmatan:
nama: mysqld
negeri: dimulakan
didayakan: Betul

- name: Pasang pustaka python3-PyMySQL
dnf:
nama: python3-PyMySQL
nyatakan: sekarang

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyelamatkan pasang_mysql_centos8.keladi fail.

Garis di bawah memberitahu Ansible untuk menjalankan buku main pasang_mysql_centos8.keladi pada setiap tuan rumah di centos8 kumpulan.

Di sini, saya telah menentukan 5 tugas.

Tugas pertama mengemas kini cache repositori pakej DNF CentOS 8 menggunakan Ansible dnf modul.

Tugas kedua memasang pakej pelayan MySQL pelayan mysql menggunakan Ansible dnf modul.

Tugas ketiga memasang pakej klien MySQL mysql menggunakan Ansible dnf modul.

Tugas keempat memastikan bahawa mysqld perkhidmatan sedang berjalan dan ia telah ditambahkan ke sistem permulaan sehingga ia bermula secara automatik semasa boot.

Tugas kelima memasang pustaka MySQL Python 3 pymysql. Ini diperlukan untuk mengakses MySQL dari Ansible.

Jalankan pasang_mysql_centos8.keladi buku permainan, seperti berikut:

$ ansible-playbook playbooks / install_mysql_centos8.keladi

Seperti yang anda lihat, buku main pasang_mysql_centos8.keladi berlari dengan jayanya.

Pada hos CentOS 8 saya, saya dapat mengakses MySQL sebagai akar pengguna tanpa kata laluan, seperti yang anda lihat dalam tangkapan skrin di bawah:

$ sudo root mysql -u

Setelah pelayan MySQL dipasang, sudah waktunya untuk menetapkan kata laluan root untuk pelayan MySQL.

Buat fail pemboleh ubah kumpulan baru centos8 (di dalam kumpulan_vars / direktori) untuk centos8 kumpulan, seperti berikut:

$ nano group_vars / centos8

Tambahkan pemboleh ubah baru mysql_pass dengan kata laluan root (dalam kes saya, rahsia) anda ingin menetapkan, seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyimpan fail.

Buat buku permainan baru set_root_pass_centos8.keladi dengan arahan berikut:

Buku main $ nano / set_root_pass_centos8.keladi

Taipkan baris berikut di set_root_pass_centos8.keladi fail:

- hos: centos8
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Tetapkan Kata Laluan root MySQL
mysql_user:
log masuk_host: 'localhost'
login_user: 'root'
login_password: "
nama: 'root'
kata laluan: 'mysql_pass'
nyatakan: sekarang

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyelamatkan set_root_pass_centos8.keladi fail.

Buku permainan ini menggunakan mysql_user Modul yang boleh dibaca untuk menetapkan kata laluan root MySQL.

The log masuk_host, log masuk_pengguna, dan kata laluan masuk pilihan dari mysql_user Modul Ansible digunakan untuk menetapkan nama host masuk, nama pengguna, dan kata laluan MySQL semasa. Secara lalai, nama hos masuk MySQL (log masuk_host) adalah localhost, nama pengguna log masuk (log masuk_pengguna) adalah akar, dan log masuk kata laluan (kata laluan masuk) kosong (") pada CentOS 8.

The kata laluan pilihan untuk mysql_user Modul Ansible digunakan untuk menetapkan kata laluan root MySQL baru, di sini. Kata laluan root MySQL akan menjadi nilai mysql_pass pemboleh ubah kumpulan yang ditetapkan lebih awal.

Jalankan buku main set_root_pass_centos8.keladi dengan arahan berikut:

$ ansible-playbook playbooks / set_root_pass_centos8.keladi

Buku main berjaya dijalankan, seperti yang dilihat dalam tangkapan skrin di bawah:

Seperti yang anda lihat, saya tidak lagi dapat log masuk ke pelayan MySQL tanpa kata laluan root.

Untuk log masuk ke pelayan MySQL sebagai akar pengguna dengan kata laluan, jalankan arahan berikut pada hos CentOS 8 anda:

$ sudo mysql -u root -p

Ketik kata laluan root yang telah anda tetapkan menggunakan Ansible, dan tekan .

Anda harus log masuk ke pelayan MySQL sebagai akar pengguna.

Memasang MySQL dan Menyiapkan Kata Laluan root di Ubuntu 20.04 LTS

Bahagian ini akan menunjukkan kepada anda cara memasang pelayan pangkalan data MySQL dan menetapkan kata laluan root di Ubuntu 20.04 LTS menggunakan Ansible.

Buat buku permainan Ansible baru install_mysql_ubuntu20.keladi di dalam buku permainan / direktori, seperti berikut:

Buku main $ nano / install_mysql_ubuntu20.keladi

Taipkan baris berikut di install_mysql_ubuntu20.keladi fail:

- hos: ubuntu20
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Kemas kini cache repositori Pakej APT
sesuai:
update_cache: Betul
- name: Pasang pelayan MySQL pada Ubuntu 20.04 LTS
sesuai:
nama: pelayan mysql
nyatakan: sekarang
- name: Pasang klien MySQL di Ubuntu 20.04 LTS
sesuai:
nama: mysql-client
nyatakan: sekarang
- name: Pastikan perkhidmatan mysql berjalan
perkhidmatan:
nama: mysql
negeri: dimulakan
didayakan: Betul
- nama: Pasang pustaka python3-pymysql
sesuai:
nama: python3-pymysql
nyatakan: sekarang

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyelamatkan install_mysql_ubuntu20.keladi fail.

Garis berikut memberitahu Ansible untuk menjalankan buku main install_mysql_ubuntu20.keladi pada setiap tuan rumah di ubuntu20 kumpulan:

Di sini, saya telah menentukan 5 tugas.

Tugas pertama mengemas kini cache repositori pakej APT Ubuntu 20.04 LTS menggunakan Ansible tepat modul.

Tugas kedua memasang pakej pelayan MySQL pelayan mysql menggunakan Ansible tepat modul.

Tugas ketiga memasang pakej klien MySQL mysql menggunakan Ansible tepat modul.

Tugas keempat memastikan bahawa mysql perkhidmatan sedang berjalan dan ia telah ditambahkan ke sistem permulaan sehingga ia bermula secara automatik semasa boot.

Tugas kelima memasang pustaka MySQL Python 3 pymysql. Ini diperlukan untuk mengakses MySQL dari Ansible.

Jalankan install_mysql_ubuntu20.keladi buku permainan, seperti berikut:

$ ansible-playbook playbooks / install_mysql_ubuntu20.keladi

Seperti yang anda lihat, buku main install_mysql_ubuntu20.keladi berlari dengan jayanya.

Pada Ubuntu 20 saya.04 LTS host, saya dapat mengakses MySQL sebagai akar pengguna tanpa kata laluan, seperti yang anda lihat dalam tangkapan skrin di bawah.

$ sudo root mysql -u

Setelah pelayan MySQL dipasang, sudah waktunya untuk menetapkan kata laluan root untuk pelayan MySQL.

Buat fail pemboleh ubah kumpulan baru ubuntu20 (di dalam kumpulan_vars / direktori) untuk ubuntu20 kumpulan, seperti berikut:

$ nano group_vars / ubuntu20

Tambahkan pemboleh ubah baru, mysql_pass, dengan kata laluan root (dalam kes saya, sangat rahsia) yang ingin anda tetapkan, seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyimpan fail.

Buat buku permainan baru set_root_pass_ubuntu20.keladi dengan arahan berikut:

Buku main $ nano / set_root_pass_ubuntu20.keladi

Taipkan baris berikut di set_root_pass_ubuntu20.keladi fail:

- hos: ubuntu20
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- name: Tukar plugin pengesahan pengguna root MySQL ke mysql_native_password
shell: mysql -u root -e 'KEMASKINI mysql.pemalam SET pengguna = "mysql_native_password"
MANA pengguna = "root" AND host = "localhost" '
- nama: Keistimewaan Flush
shell: mysql -u root -e 'FLUSH PRIVILEGES'
- nama: Tetapkan kata laluan root MySQL
mysql_user:
log masuk_host: 'localhost'
login_user: 'root'
login_password: "
nama: 'root'
kata laluan: 'mysql_pass'
nyatakan: sekarang

Setelah selesai, tekan + X, diikuti oleh Y dan , untuk menyelamatkan set_root_pass_ubuntu20.keladi fail.

Di sini, saya telah menentukan tiga tugas.

Tugas pertama mengubah plugin pengesahan MySQL akar pengguna dari author_socket ke mysql_native_password.

Tugas kedua memuatkan semua hak istimewa.

Tugas ketiga menggunakan mysql_user Modul yang boleh dibaca untuk menetapkan kata laluan root MySQL.

Dalam tugas ketiga, log masuk_host, log masuk_pengguna, dan kata laluan masuk pilihan dari mysql_user Modul Ansible digunakan untuk menetapkan nama host masuk, nama pengguna, dan kata laluan MySQL semasa. Secara lalai, nama hos masuk MySQL (log masuk_hostadalah localhost, nama pengguna log masuk (log masuk_penggunaadalah akar, dan log masuk kata laluan (kata laluan masuk) kosong (") pada sistem.

Di sini, kata laluan pilihan untuk mysql_user Modul Ansible digunakan untuk menetapkan kata laluan root MySQL baru. Kata laluan root MySQL akan menjadi nilai mysql_pass pemboleh ubah kumpulan, yang saya tetapkan lebih awal, di group_vars / ubuntu20 fail.

Jalankan buku main set_root_pass_ubuntu20.keladi dengan arahan berikut:

$ ansible-playbook playbooks / set_root_pass_ubuntu20.keladi

Buku main berjaya dijalankan, seperti yang anda lihat dalam tangkapan skrin di bawah:

Seperti yang anda lihat, saya tidak lagi dapat log masuk ke pelayan MySQL tanpa kata laluan root.

$ sudo root mysql -u

Untuk log masuk ke pelayan MySQL sebagai pengguna root dengan kata laluan yang ditetapkan, jalankan arahan berikut pada Ubuntu 20 anda.04 hos LTS:

$ sudo mysql -u root -p

Ketik kata laluan root yang telah anda tetapkan menggunakan Ansible dan tekan .

Anda harus log masuk ke pelayan MySQL sebagai pengguna root.

Kesimpulannya

Artikel ini menunjukkan kepada anda cara memasang pelayan MySQL dan menetapkan kata laluan root MySQL pada CentOS 8 dan Ubuntu 20.04 Pengedaran Linux LTS menggunakan Ansible. Artikel ini menggunakan mysql_user Modul yang boleh dibaca untuk menetapkan kata laluan root MySQL. Anda dapat menggunakan modul ini untuk mengubah kata laluan root MySQL, membuat pengguna MySQL baru, dan melaksanakan banyak lagi fungsi pengurusan pengguna.

Untuk maklumat lebih lanjut mengenai mysql_user modul, periksa dokumentasi rasmi modul mysql_user.

Cara menukar kamus ke JSON di python
JSON (Notasi Objek JavaScript) adalah format file yang popular untuk menyajikan data berstruktur dan memindahkan data antara pelayan dan aplikasi deng...
Cara memeriksa fail yang ada di Python
Adalah perlu untuk mengetahui ada fail yang ada atau tidak untuk banyak tujuan pengaturcaraan. Sebagai contoh, penting untuk mengetahui fail itu ada s...
Memahami skop pemboleh ubah global dalam python
Dua jenis pemboleh ubah dapat ditentukan dalam kebanyakan bahasa pengaturcaraan. Ini adalah pemboleh ubah global dan pemboleh ubah tempatan. Pemboleh ...