Jak ustawić hasło root MySQL za pomocą ansible

Jak ustawić hasło root MySQL za pomocą ansible
Większość dystrybucji Linux, w tym Centos/Rhel i Ubuntu/Debian, nie ustawiaj automatycznie hasła root MySQL. Ponieważ hasło roota MySQL nie jest automatycznie ustawiane, można zalogować się do konsoli MySQL jako root bez hasła. To nie jest zbyt dobre dla bezpieczeństwa.

Na centos/rhel możesz łatwo uruchomić Mysql_Secure_Instalation polecenie do skonfigurowania hasła root. Ale na Ubuntu 20.04 LTS, ta metoda nie działa, ponieważ MySQL używa innej wtyczki uwierzytelniania dla źródło użytkownik.

W tym artykule pokaże, jak skonfigurować hasło root MySQL na Centos 8 i Ubuntu 20.04 LTS Linux Rozkłady za pomocą modułów Ansible.

Wymagania wstępne


Jeśli chcesz wypróbować przykłady zawarte w tym artykule,

1) Musisz mieć zainstalowany na komputerze Ansible.

2) Musisz mieć co najmniej hosta Centos/Rhel 8 lub Ubuntu 20.04 Host LTS skonfigurowany do automatyzacji Ansible.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji ansible i konfiguracji hostów do automatyzacji ansible. W razie potrzeby możesz je sprawdzić.

Konfigurowanie katalogu projektów

Zanim przejdziemy dalej, skonfigurujemy nowy katalog projektu Ansible, po prostu po to, aby wszystko było nieco zorganizowane.

Aby utworzyć katalog projektu mysql-root-pass/ i wszystkie wymagane podkatalog (w bieżącym katalogu roboczym) uruchom następujące polecenie:

$ mkdir -pv mysql-root-pass/podręczniki, host_vars, grupa_vars

Po utworzeniu katalogu projektu przejdź do katalogu projektu, w następujący sposób:

$ CD MySQL-Root-Pass/

Stwórz zastępy niebieskie Plik zapasowy, w następujący sposób:

$ nano gospodarze

Dodaj nazwy IP hosta lub DNS swojego CentOS/RHEL 8 lub Ubuntu 20.04 Hosty LTS w pliku ekwipunku (jeden host na wiersz), jak pokazano na zrzucie ekranu poniżej.

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

Tutaj stworzyłem dwie grupy, Centos8, I Ubuntu20. Centos8 Grupa ma nazwę DNS mojego gospodarza Centos 8, VM3.Nodekite.com; i Ubuntu20 Grupa ma nazwę DNS mojego Ubuntu 20.04 LTS Host, VM7.Nodekite.com.

Utwórz plik konfiguracyjny Ansible Ansible.CFG W katalogu projektu, w następujący sposób:

$ nano ansible.CFG

Wpisz następujące wiersze w Ansible.CFG plik:

[domyślne]
Inwentaryzacja = hosty
host_key_checking = false

Po zakończeniu zapisz Ansible.CFG plik naciskając + X, śledzony przez Y I .

Spróbuj pingować wszystkich hostów dodanych w swoim zastępy niebieskie Plik zapasowy, w następujący sposób:

$ ansible all -u ansible -m ping

Jak widać, My Centos 8 Host (VM3.Nodekite.com) i Ubuntu 20.04 LTS Host (VM7.Nodekite.com) są dostępne.

Instalowanie MySQL i konfigurowanie hasła roota na CentOS/RHEL 8

W tej sekcji pokaże, jak zainstalować serwer bazy danych MySQL i skonfigurować hasło root na Centos 8 za pomocą ansible. Ta sama procedura powinna działać na RHEL 8.

Utwórz nowy poradnik Ansible instalt_mysql_centos8.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/instalt_mysql_centos8.Yaml

Wpisz następujące wiersze w instalt_mysql_centos8.Yaml plik:

- Gospodarze: Centos8
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Zaktualizuj pamięć podręczną repozytorium pakietów DNF
DNF:
aktualizacja_cache: true
- Nazwa: Zainstaluj serwer MySQL na CentOS 8
DNF:
Nazwa: MySQL-Server
Stan: obecny
- Nazwa: Zainstaluj klient MySQL na Centos 8
DNF:
Nazwa: Mysql
Stan: obecny
- Nazwa: Upewnij się, że usługa MySQLD działa
praca:
Nazwa: Mysqld
Stan: zaczął
Włączone: prawda

- Nazwa: Zainstaluj bibliotekę Python3-Pymysql
DNF:
Nazwa: Python3-Pymysql
Stan: obecny

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować instalt_mysql_centos8.Yaml plik.

Poniższa linia mówi Ansible, aby uruchomił podręcznik instalt_mysql_centos8.Yaml na każdym gospodarze w Centos8 Grupa.

Tutaj zdefiniowałem 5 zadań.

Pierwsze zadanie aktualizuje pamięć podręczną repozytorium pakietów DNF Centos 8 za pomocą Ansible DNF moduł.

Drugie zadanie instaluje pakiet serwera MySQL MySQL-Server Korzystanie z Ansible DNF moduł.

Trzecie zadanie instaluje pakiet klienta MySQL Mysql Korzystanie z Ansible DNF moduł.

Czwarte zadanie zapewnia, że Mysqld Usługa działa i została dodana do uruchamiania systemu, aby automatycznie uruchamia się w rozruchu.

Piąte zadanie instaluje bibliotekę Python 3 Mysql Pymysql. Jest to wymagane do uzyskania dostępu do MySQL z Ansible.

Uruchom instalt_mysql_centos8.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/Instalt_Mysql_Centos8.Yaml

Jak widać, podręcznik instalt_mysql_centos8.Yaml działał pomyślnie.

Na moim hoście Centos 8 mogę uzyskać dostęp do MySQL jako źródło Użytkownik bez hasła, jak widać na zrzucie ekranu poniżej:

$ sudo mysql -u root

Teraz, gdy jest zainstalowany serwer MySQL, nadszedł czas, aby skonfigurować hasło rootowe dla serwera MySQL.

Utwórz nowy plik zmiennej grupy Centos8 (w grupa_vars/ katalog) dla Centos8 grupa, jak następuje:

$ Nano Group_Vars/Centos8

Dodaj nową zmienną mysql_pass z hasłem root (w moim przypadku, sekret) Chcesz ustawić, jak pokazano na zrzucie ekranu poniżej.

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby zapisać plik.

Utwórz nowy podręcznik set_root_pass_centos8.Yaml Z następującym poleceniem:

$ Nano Playbooks/set_root_pass_centos8.Yaml

Wpisz następujące wiersze w set_root_pass_centos8.Yaml plik:

- Gospodarze: Centos8
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Ustaw hasło root MySQL
mysql_user:
login_host: „localhost”
login_user: „root”
Login Hasło: "
Nazwa: „root”
hasło: 'mysql_pass'
Stan: obecny

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować set_root_pass_centos8.Yaml plik.

Ten podręcznik używa mysql_user Moduł ansible do ustawienia hasła root MySQL.

login_host, login_user, I Login Hasło Opcje mysql_user Moduł ansible służy odpowiednio do ustawienia bieżącej nazwy hosta logowania MySQL, nazwy użytkownika i hasła. Domyślnie nazwa hosta logowania MySQL (login_host) jest Lokalny Gospodarz, nazwa użytkownika logowania (login_user) jest źródło, i login hasło (Login Hasło) jest pusty (") na Centos 8.

hasło opcja mysql_user Moduł ansible służy do ustawienia nowego hasła MySQL Root, tutaj. Hasło root MySQL będzie wartością mysql_pass Zmienna grupowa, która została ustalona wcześniej.

Uruchom podręcznik set_root_pass_centos8.Yaml Z następującym poleceniem:

$ Ansible-Playbook Playbooks/set_root_pass_centos8.Yaml

Poradnik działał pomyślnie, jak widać na zrzucie ekranu poniżej:

Jak widać, nie mogę już zalogować się na serwerze MySQL bez hasła root.

Aby zalogować się do serwera MySQL jako źródło Użytkownik z hasłem, uruchom następujące polecenie na hoście CentOS 8:

$ sudo mysql -u root -p

Wpisz hasło roota, które ustawiłeś za pomocą ansible, i naciśnij .

Powinieneś zostać zalogowany na serwerze MySQL jako źródło użytkownik.

Instalowanie MySQL i konfigurowanie hasła roota na Ubuntu 20.04 LTS

W tej sekcji pokaże, jak zainstalować serwer bazy danych MySQL i skonfigurować hasło root na Ubuntu 20.04 LTS za pomocą ansible.

Utwórz nowy poradnik Ansible instalt_mysql_ubuntu20.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/install_mysql_ubuntu20.Yaml

Wpisz następujące wiersze w instalt_mysql_ubuntu20.Yaml plik:

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Aktualizacja APT Pakiet Repository Cache
trafny:
aktualizacja_cache: true
- Nazwa: Zainstaluj serwer MySQL na Ubuntu 20.04 LTS
trafny:
Nazwa: MySQL-Server
Stan: obecny
- Nazwa: Zainstaluj klient MySQL na Ubuntu 20.04 LTS
trafny:
Nazwa: MySQL-Client
Stan: obecny
- Nazwa: Upewnij się, że usługa MySQL działa
praca:
Nazwa: Mysql
Stan: zaczął
Włączone: prawda
- Nazwa: Zainstaluj bibliotekę Python3-Pymysql
trafny:
Nazwa: Python3-Pymysql
Stan: obecny

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować instalt_mysql_ubuntu20.Yaml plik.

Poniższy wiersz mówi Ansible, aby uruchomił podręcznik instalt_mysql_ubuntu20.Yaml na każdym gospodarze w Ubuntu20 Grupa:

Tutaj zdefiniowałem 5 zadań.

Pierwsze zadanie aktualizuje pamięć podręczną repozytorium pakietów Apt Ubuntu 20.04 LTS za pomocą Ansible trafny moduł.

Drugie zadanie instaluje pakiet serwera MySQL MySQL-Server Korzystanie z Ansible trafny moduł.

Trzecie zadanie instaluje pakiet klienta MySQL Mysql Korzystanie z Ansible trafny moduł.

Czwarte zadanie zapewnia, że Mysql Usługa działa i została dodana do uruchamiania systemu, aby automatycznie uruchamia się w rozruchu.

Piąte zadanie instaluje bibliotekę Python 3 Mysql Pymysql. Jest to wymagane, aby uzyskać dostęp do MySQL z Ansible.

Uruchom instalt_mysql_ubuntu20.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/Instalt_Mysql_ubuntu20.Yaml

Jak widać, podręcznik instalt_mysql_ubuntu20.Yaml działał pomyślnie.

Na moim Ubuntu 20.04 LTS Host, mogę uzyskać dostęp do MySQL jako źródło użytkownik bez hasła, jak widać na zrzucie ekranu poniżej.

$ sudo mysql -u root

Teraz, gdy jest zainstalowany serwer MySQL, nadszedł czas, aby skonfigurować hasło rootowe dla serwera MySQL.

Utwórz nowy plik zmiennej grupy Ubuntu20 (w grupa_vars/ katalog) dla Ubuntu20 grupa, jak następuje:

$ Nano Group_Vars/Ubuntu20

Dodaj nową zmienną, mysql_pass, z hasłem root (w moim przypadku, bardzo sext) że chciałbyś ustawić, jak pokazano na zrzucie ekranu poniżej.

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby zapisać plik.

Utwórz nowy podręcznik set_root_pass_ubuntu20.Yaml Z następującym poleceniem:

$ Nano Playbooks/set_root_pass_ubuntu20.Yaml

Wpisz następujące wiersze w set_root_pass_ubuntu20.Yaml plik:

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Zmień wtyczkę uwierzytelniania użytkownika mysql na mysql_native_password
Shell: mysql -u root -e 'aktualizacja mysql.Ustaw użytkownika wtyczka = "mysql_native_password"
Gdzie user = „root” i host = "localHost" '
- Nazwa: Przywileje spłukające
Shell: mysql -u root -e „uprawnienia spłukające”
- Nazwa: Ustaw hasło root MySQL
mysql_user:
login_host: „localhost”
login_user: „root”
Login Hasło: "
Nazwa: „root”
hasło: 'mysql_pass'
Stan: obecny

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować set_root_pass_ubuntu20.Yaml plik.

Tutaj zdefiniowałem trzy zadania.

Pierwsze zadanie zmienia wtyczkę uwierzytelniania MySQL źródło użytkownik z Auth_socket Do mysql_native_password.

Drugie zadanie przeładowuje wszystkie uprawnienia.

Trzecie zadanie używa mysql_user Moduł ansible do ustawienia hasła root MySQL.

W trzecim zadaniu login_host, login_user, I Login Hasło Opcje mysql_user Moduł ansible służy odpowiednio do ustawienia bieżącej nazwy hosta logowania MySQL, nazwy użytkownika i hasła. Domyślnie nazwa hosta logowania MySQL (login_host) Jest Lokalny Gospodarz, nazwa użytkownika logowania (login_user) Jest źródło, i login hasło (Login Hasło) jest pusty (") w systemie.

Tutaj hasło opcja mysql_user Moduł ansible służy do ustawienia nowego hasła MySQL Root. Hasło root MySQL będzie wartością mysql_pass zmienna grupowa, którą ustawiłem wcześniej, w Group_vars/Ubuntu20 plik.

Uruchom podręcznik set_root_pass_ubuntu20.Yaml Z następującym poleceniem:

$ Ansible-Playbook Playbooks/set_root_pass_ubuntu20.Yaml

Poradnik działał pomyślnie, jak widać na zrzucie ekranu poniżej:

Jak widać, nie mogę już zalogować się na serwerze MySQL bez hasła root.

$ sudo mysql -u root

Aby zalogować się na serwerze MySQL jako użytkownik root z hasłem ustawionym, uruchom następujące polecenie na Ubuntu 20.04 LTS Host:

$ sudo mysql -u root -p

Wpisz hasło roota, które ustawiłeś za pomocą ansible i naciśnij .

Powinieneś zostać zalogowany na serwerze MySQL jako użytkownik root.

Wniosek

W tym artykule pokazano, jak zainstalować serwer MySQL i ustawić hasło root MySQL na Centos 8 i Ubuntu 20.04 LTS Linux Rozkłady za pomocą Ansible. W tym artykule wykorzystano mysql_user Moduł ansible do konfigurowania hasła root MySQL. Możesz użyć tego modułu, aby zmienić hasło root MySQL, utworzyć nowych użytkowników MySQL i przeglądać wiele innych funkcji zarządzania użytkownikami.

Aby uzyskać więcej informacji na temat mysql_user Moduł, sprawdź oficjalną dokumentację modułu MySQL_User.