Ansible

Come impostare la password di root di MySQL usando Ansible

Come impostare la password di root di MySQL usando Ansible
La maggior parte delle distribuzioni Linux, incluse CentOS/RHEL e Ubuntu/Debian, non impostano automaticamente la password di root di MySQL. Poiché la password di root di MySQL non viene impostata automaticamente, è possibile accedere alla console MySQL come root senza alcuna password. Questo non è molto buono per la sicurezza.

Su CentOS/RHEL, puoi eseguire facilmente il mysql_secure_installation comando per impostare una password di root. Ma su Ubuntu 20.04 LTS, questo metodo non funziona, poiché MySQL utilizza un plug-in di autenticazione diverso per il radice utente.

Questo articolo ti mostrerà come impostare una password di root MySQL su CentOS 8 e Ubuntu 20.04 distribuzioni Linux LTS che utilizzano moduli Ansible.

Prerequisiti


Se vuoi provare gli esempi inclusi in questo articolo,

1) Devi avere Ansible installato sul tuo computer.

2) Devi avere almeno un host CentOS/RHEL 8 o Ubuntu 20.04 Host LTS configurato per l'automazione Ansible.

Ci sono molti articoli su LinuxHint dedicati all'installazione di Ansible e alla configurazione degli host per l'automazione di Ansible. Puoi dare un'occhiata a questi se necessario.

Configurazione di una directory di progetto

Prima di andare avanti, imposteremo una nuova directory di progetto Ansible, solo per mantenere le cose un po' organizzate.

Per creare la directory del progetto mysql-root-pass/ e tutte le sottodirectory richieste (nella directory di lavoro corrente), esegui il seguente comando:

$ mkdir -pv mysql-root-pass/playbooks,host_vars,group_vars

Una volta creata la directory del progetto, accedere alla directory del progetto, come segue:

$ cd mysql-root-pass/

Creare un padroni di casa file di inventario, come segue:

$ nano host

Aggiungi l'IP host o i nomi DNS del tuo CentOS/RHEL 8 o Ubuntu 20.04 host LTS nel file di inventario (un host per riga), come mostrato nello screenshot qui sotto.

Al termine, salvare il file premendo by + X, seguito da e .

Ecco, ho creato due gruppi, centos8, e ubuntu20. Il centos8 gruppo ha il nome DNS del mio host CentOS 8 8, vm3.nodokite.come; e il ubuntu20 gruppo ha il nome DNS del mio Ubuntu 20.04 LTS host, vm7.nodokite.come.

Crea un file di configurazione Ansible ansible.cfg nella directory del progetto, come segue:

$ nano ansible.cfg

Digita le seguenti righe nel ansible.cfg file:

[predefiniti]
inventario           = host
host_key_checking   = Falso

Una volta che hai finito, salva il ansible.cfg file premendo + X, seguito da e .

Prova a eseguire il ping di tutti gli host che hai aggiunto nel tuo padroni di casa file di inventario, come segue:

$ ansible all -u ansible -m ping

Come puoi vedere, il mio host CentOS 8 (vm3.nodokite.com) e Ubuntu 20.04 LTS host (vm7.nodokite.com) sono accessibili.

Installazione di MySQL e impostazione della password di root su CentOS/RHEL 8

Questa sezione ti mostrerà come installare il server del database MySQL e impostare una password di root su CentOS 8 usando Ansible. La stessa procedura dovrebbe funzionare su RHEL 8.

Crea il nuovo playbook di Ansible install_mysql_centos8.igname nel libri di gioco/ rubrica, come segue:

$ nano playbooks/install_mysql_centos8.igname

Digita le seguenti righe nel install_mysql_centos8.igname file:

- host: centos8
utente: ansible
diventa vero
compiti:
- nome: Aggiorna la cache del repository del pacchetto DNF
dnf:
update_cache: Vero
- nome: Installa il server MySQL su CentOS 8
dnf:
nome: mysql-server
stato: presente
- nome: Installa il client MySQL su CentOS 8
dnf:
nome: mysql
stato: presente
- nome: assicurati che il servizio mysqld sia in esecuzione
servizio:
nome: mysqld
stato: iniziato
abilitato: Vero

- nome: Installa la libreria python3-PyMySQL
dnf:
nome: python3-PyMySQL
stato: presente

Una volta terminato, premere + X, seguito da e , per salvare il install_mysql_centos8.igname file.

La riga sotto dice ad Ansible di eseguire il playbook install_mysql_centos8.igname su ogni host nel centos8 gruppo.

Qui ho definito 5 compiti.

La prima attività aggiorna la cache del repository del pacchetto DNF di CentOS 8 utilizzando Ansible dnf modulo.

La seconda attività installa il pacchetto del server MySQL mysql-server usando l'Ansible dnf modulo.

La terza attività installa il pacchetto client MySQL mysql usando l'Ansible dnf modulo.

Il quarto compito assicura che il mysqld servizio è in esecuzione e che è stato aggiunto all'avvio del sistema in modo che si avvii automaticamente all'avvio.

La quinta attività installa la libreria Python 3 MySQL pymysql. Questo è necessario per accedere a MySQL da Ansible.

Corri il install_mysql_centos8.igname playbook, come segue:

$ ansible-playbook playbooks/install_mysql_centos8.igname

Come puoi vedere, il playbook install_mysql_centos8.igname eseguito con successo.

Sul mio host CentOS 8, posso accedere a MySQL come radice utente senza alcuna password, come puoi vedere nello screenshot qui sotto:

$ sudo mysql -u root

Ora che il server MySQL è installato, è il momento di impostare una password di root per il server MySQL.

Crea il nuovo file delle variabili di gruppo centos8 (nel group_vars/ directory) per il centos8 gruppo, come segue:

$ nano group_vars/centos8

Aggiungi una nuova variabile mysql_pass con la password di root (nel mio caso, segreto) che desideri impostare, come mostrato nello screenshot qui sotto.

Una volta terminato, premere + X, seguito da e , per salvare il file.

Crea un nuovo playbook set_root_pass_centos8.igname con il seguente comando:

$ nano playbooks/set_root_pass_centos8.igname

Digita le seguenti righe nel set_root_pass_centos8.igname file:

- host: centos8
utente: ansible
diventa vero
compiti:
- nome: Imposta la password di root di MySQL
utente_mysql:
login_host: 'localhost'
login_user: 'radice'
password per il login: "
nome: 'radice'
password: ' mysql_pass '
stato: presente

Una volta terminato, premere + X, seguito da e , per salvare il set_root_pass_centos8.igname file.

Questo playbook utilizza il mysql_user Modulo Ansible per impostare una password di root MySQL.

Il login_host, login_user, e password per il login opzioni del mysql_user Il modulo Ansible viene utilizzato per impostare rispettivamente il nome host di accesso MySQL, il nome utente e la password correnti. Per impostazione predefinita, il nome host di accesso MySQL (login_host) è il localhost, il nome utente di accesso (login_user) è il radice, e il login parola d'ordine (password per il login) è vuoto (") su CentOS 8.

Il parola d'ordine opzione del mysql_user Il modulo Ansible viene utilizzato per impostare una nuova password di root MySQL, qui. La password di root di MySQL sarà il valore di mysql_pass variabile di gruppo che è stata impostata in precedenza.

Esegui il playbook set_root_pass_centos8.igname con il seguente comando:

$ ansible-playbook playbooks/set_root_pass_centos8.igname

Il playbook è stato eseguito correttamente, come mostrato nello screenshot seguente:

Come puoi vedere, non riesco più ad accedere al server MySQL senza una password di root.

Per accedere al server MySQL come radice utente con una password, esegui il seguente comando sul tuo host CentOS 8:

$ sudo mysql -u root -p

Digita la password di root che hai impostato usando Ansible e premi .

Dovresti essere loggato al server MySQL come radice utente.

Installazione di MySQL e impostazione della password di root su Ubuntu 20.04 LTS

Questa sezione ti mostrerà come installare il server del database MySQL e impostare una password di root su Ubuntu 20.04 LTS con Ansible.

Crea un nuovo playbook Ansible install_mysql_ubuntu20.igname nel libri di gioco/ rubrica, come segue:

$ nano playbooks/install_mysql_ubuntu20.igname

Digita le seguenti righe nel install_mysql_ubuntu20.igname file:

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- nome: Aggiorna la cache del repository del pacchetto APT
adatto:
update_cache: Vero
- nome: Installa il server MySQL su Ubuntu 20.04 LTS
adatto:
nome: mysql-server
stato: presente
- nome: Installa il client MySQL su Ubuntu 20.04 LTS
adatto:
nome: mysql-client
stato: presente
- nome: assicurati che il servizio mysql sia in esecuzione
servizio:
nome: mysql
stato: iniziato
abilitato: Vero
- nome: Installa la libreria python3-pymysql
adatto:
nome: python3-pymysql
stato: presente

Una volta terminato, premere + X, seguito da e , per salvare il install_mysql_ubuntu20.igname file.

La riga seguente dice ad Ansible di eseguire il playbook install_mysql_ubuntu20.igname su ogni host nel ubuntu20 gruppo:

Qui ho definito 5 compiti.

La prima attività aggiorna la cache del repository del pacchetto APT di Ubuntu 20.04 LTS utilizzando Ansible adatto modulo.

La seconda attività installa il pacchetto del server MySQL mysql-server usando l'Ansible adatto modulo.

La terza attività installa il pacchetto client MySQL mysql usando l'Ansible adatto modulo.

Il quarto compito assicura che il mysql servizio è in esecuzione e che è stato aggiunto all'avvio del sistema in modo che si avvii automaticamente all'avvio.

La quinta attività installa la libreria Python 3 MySQL pymysql. Questo è necessario per accedere a MySQL da Ansible.

Corri il install_mysql_ubuntu20.igname playbook, come segue:

$ ansible-playbook playbooks/install_mysql_ubuntu20.igname

Come puoi vedere, il playbook install_mysql_ubuntu20.igname eseguito con successo.

Sulla mia Ubuntu 20.04 LTS host, posso accedere a MySQL come radice utente senza alcuna password, come puoi vedere nello screenshot qui sotto.

$ sudo mysql -u root

Ora che il server MySQL è installato, è il momento di impostare una password di root per il server MySQL.

Crea un nuovo file di variabili di gruppo ubuntu20 (nel group_vars/ directory) per il ubuntu20 gruppo, come segue:

$ nano group_vars/ubuntu20

Aggiungi una nuova variabile, mysql_pass, con la password di root (nel mio caso, molto segreto) che vorresti impostare, come mostrato nello screenshot qui sotto.

Una volta terminato, premere + X, seguito da e , per salvare il file.

Crea un nuovo playbook set_root_pass_ubuntu20.igname con il seguente comando:

$ nano playbook/set_root_pass_ubuntu20.igname

Digita le seguenti righe nel set_root_pass_ubuntu20.igname file:

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- name: cambia il plugin di autenticazione dell'utente root di MySQL in mysql_native_password
shell: mysql -u root -e 'AGGIORNA mysql.user SET plugin="mysql_native_password"
WHERE utente="root" AND host="localhost"'
- nome: Privilegi a livello
shell: mysql -u root -e 'FLUSH PRIVILEGI'
- nome: Imposta la password di root di MySQL
utente_mysql:
login_host: 'localhost'
login_user: 'radice'
password per il login: "
nome: 'radice'
password: ' mysql_pass '
stato: presente

Una volta terminato, premere + X, seguito da e , per salvare il set_root_pass_ubuntu20.igname file.

Qui ho definito tre compiti.

La prima attività cambia il plugin di autenticazione di MySQL radice utente da auth_socket per mysql_native_password.

La seconda attività ricarica tutti i privilegi.

La terza attività utilizza il mysql_user Modulo Ansible per impostare una password di root MySQL.

Nel terzo compito, il login_host, login_user, e password per il login opzioni del mysql_user Il modulo Ansible viene utilizzato per impostare rispettivamente il nome host di accesso MySQL, il nome utente e la password correnti. Per impostazione predefinita, il nome host di accesso MySQL (login_host) è localhost, il nome utente di accesso (login_user) è radice, e il login parola d'ordine (password per il login) è vuoto (") sul sistema.

qui, il parola d'ordine opzione del mysql_user Il modulo Ansible viene utilizzato per impostare una nuova password di root MySQL. La password di root di MySQL sarà il valore di mysql_pass variabile di gruppo, che ho impostato in precedenza, nel group_vars/ubuntu20 file.

Esegui il playbook set_root_pass_ubuntu20.igname con il seguente comando:

$ ansible-playbook playbooks/set_root_pass_ubuntu20.igname

Il playbook è stato eseguito correttamente, come puoi vedere nello screenshot qui sotto:

Come puoi vedere, non riesco più ad accedere al server MySQL senza una password di root.

$ sudo mysql -u root

Per accedere al server MySQL come utente root con la password impostata, esegui il seguente comando sul tuo Ubuntu 20.04 LTS host:

$ sudo mysql -u root -p

Digita la password di root che hai impostato usando Ansible e premi .

Dovresti essere loggato al server MySQL come utente root.

Conclusione

Questo articolo ti ha mostrato come installare il server MySQL e impostare una password di root MySQL su CentOS 8 e Ubuntu 20.04 Distribuzioni LTS Linux che utilizzano Ansible. Questo articolo ha utilizzato il mysql_user Modulo Ansible per impostare la password di root di MySQL. È possibile utilizzare questo modulo per modificare la password di root di MySQL, creare nuovi utenti MySQL ed eseguire molte altre funzioni di gestione degli utenti.

Per maggiori informazioni sul mysql_user modulo, controlla la documentazione ufficiale del modulo mysql_user.

Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...
Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...