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
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
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: centos8pengguna: 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
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
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: centos8pengguna: 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
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: ubuntu20pengguna: 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
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
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: ubuntu20pengguna: 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
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.