Come impostare la password di root mysql usando Ansible

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

Su CentOS/RHEL, puoi facilmente eseguire 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 LTS Distribuzioni Linux utilizzando 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 un Ubuntu 20.04 LTS host configurato per l'automazione Ansible.

Ci sono molti articoli su Linuxhint dedicati all'installazione di Ansible e alla configurazione di host per Ansible Automation. Puoi verificarli se necessario.

Impostazione di una directory di progetto

Prima di andare oltre, imposteremo una nuova directory di progetti 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 attuale), eseguire il seguente comando:

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

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

$ cd mysql-root-pass/

Creare un ospiti File di inventario, come segue:

$ nano hosts

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

Una volta terminato, salva il file premendo + X, seguito da Y E .

Qui, ho creato due gruppi, centos8, E Ubuntu20. IL centos8 Il gruppo ha il nome DNS del mio host CentOS 8, VM3.nodekite.com; e il Ubuntu20 Il gruppo ha il nome DNS del mio Ubuntu 20.04 LTS host, VM7.nodekite.com.

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

$ nano ansible.cfg

Digitare le seguenti righe in Ansible.cfg file:

[impostazioni predefinite]
Inventario = host
host_key_checking = false

Una volta terminato, salva il Ansible.cfg File premendo + X, seguito da Y E .

Prova a far pinging di tutti gli host che hai aggiunto nel tuo ospiti File di inventario, come segue:

$ ansible tutto -u ansible -m ping

Come puoi vedere, l'host My CentOS 8 (VM3.nodekite.com) e ubuntu 20.04 LTS Host (VM7.nodekite.com) sono accessibili.

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

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

Crea il nuovo playbook Ansible Install_Mysql_Centos8.Yaml nel playbooks/ Directory, come segue:

$ nano playbooks/install_mysql_centos8.Yaml

Digitare le seguenti righe in Install_Mysql_Centos8.Yaml file:

- Ospite: centos8
Utente: Ansible
diventa vero
compiti:
- Nome: aggiorna la cache del repository del pacchetto DNF
DNF:
update_cache: vero
- Nome: installa MySQL Server 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 Y E , per salvare il Install_Mysql_Centos8.Yaml file.

La riga seguente dice ad Ansible di eseguire il playbook Install_Mysql_Centos8.Yaml su ogni ospite del centos8 gruppo.

Qui, ho definito 5 compiti.

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

La seconda attività installa il pacchetto 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 garantisce che il mysqld Il servizio è in esecuzione e che è stato aggiunto all'avvio del sistema in modo che inizi automaticamente a boot.

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

Corri il Install_Mysql_Centos8.Yaml playbook, come segue:

$ ansible-playbook playbooks/install_mysql_centos8.Yaml

Come puoi vedere, il playbook Install_Mysql_Centos8.Yaml ha corso con successo.

Sul mio host CentOS 8, posso accedere a MySQL come il radice utente senza password, come puoi vedere nello screenshot di seguito:

$ sudo mysql -u root

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

Crea il nuovo file variabile 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) Desideri impostare, come mostrato nello screenshot seguente.

Una volta terminato, premere + X, seguito da Y E , Per salvare il file.

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

$ nano playbooks/set_root_pass_centos8.Yaml

Digitare le seguenti righe in set_root_pass_centos8.Yaml file:

- Ospite: centos8
Utente: Ansible
diventa vero
compiti:
- Nome: imposta la password di root mysql
mysql_user:
login_host: "localhost"
login_user: 'root'
password per il login: "
Nome: "root"
Password: 'mysql_pass'
Stato: presente

Una volta terminato, premere + X, seguito da Y E , per salvare il set_root_pass_centos8.Yaml 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 di mysql_user Il modulo Ansible viene utilizzato per impostare rispettivamente il nome host di accesso MySQL, il nome utente e la password attuali MySQL. Per impostazione predefinita, il nome host di accesso MySQL (login_host) è il Localhost, il nome utente di accesso (login_user) è il radice, e l'accesso 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 mysql sarà il valore del mysql_pass variabile di gruppo che è stata impostata prima.

Esegui il playbook set_root_pass_centos8.Yaml con il seguente comando:

$ ansible-playbook playbooks/set_root_pass_centos8.Yaml

Il playbook ha funzionato con successo, come visto nello screenshot qui sotto:

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

Per accedere al server mysql come radice Utente con una password, eseguire il seguente comando sull'host CentOS 8:

$ sudo mysql -u root -p

Digita la password di root impostata utilizzando Ansible e premere .

Dovresti essere effettuato l'accesso 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 di database MySQL e impostare una password di root su Ubuntu 20.04 LTS usando Ansible.

Crea un nuovo playbook Ansible Install_Mysql_Ubuntu20.Yaml nel playbooks/ Directory, come segue:

$ nano playbooks/install_mysql_ubuntu20.Yaml

Digitare le seguenti righe in Install_Mysql_Ubuntu20.Yaml file:

- Host: Ubuntu20
Utente: Ansible
diventa vero
compiti:
- Nome: aggiorna la cache del repository del pacchetto APT
Apt:
update_cache: vero
- Nome: installa MySQL Server su Ubuntu 20.04 LTS
Apt:
Nome: Mysql-Server
Stato: presente
- Nome: installa client mysql su Ubuntu 20.04 LTS
Apt:
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
Apt:
Nome: Python3-Pymysql
Stato: presente

Una volta terminato, premere + X, seguito da Y E , per salvare il Install_Mysql_Ubuntu20.Yaml file.

La riga seguente dice ad Ansible di eseguire il playbook Install_Mysql_Ubuntu20.Yaml su ogni ospite del Ubuntu20 gruppo:

Qui, ho definito 5 compiti.

La prima attività aggiorna la cache del repository del pacchetto APT di Ubuntu 20.04 LTS usando l'ansible Apt modulo.

La seconda attività installa il pacchetto server MySQL mysql-server usando l'ansible Apt modulo.

La terza attività installa il pacchetto client MySQL mysql usando l'ansible Apt modulo.

La quarta attività si assicura che il mysql Il servizio è in esecuzione e che è stato aggiunto all'avvio del sistema in modo che inizi automaticamente a boot.

La quinta attività installa la biblioteca MySQL Python 3 Pymysql. Questo è necessario per accedere a mysql da Ansible.

Corri il Install_Mysql_Ubuntu20.Yaml playbook, come segue:

$ ansible-playbook playbooks/install_mysql_ubuntu20.Yaml

Come puoi vedere, il playbook Install_Mysql_Ubuntu20.Yaml ha corso con successo.

Sul mio ubuntu 20.04 LTS host, posso accedere a mysql come radice utente senza password, come puoi vedere nello screenshot di seguito.

$ sudo mysql -u root

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

Crea un nuovo file variabile 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, Verysecret) che desideri impostare, come mostrato nello screenshot seguente.

Una volta terminato, premere + X, seguito da Y E , Per salvare il file.

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

$ nano playbooks/set_root_pass_ubuntu20.Yaml

Digitare le seguenti righe in set_root_pass_ubuntu20.Yaml file:

- Host: Ubuntu20
Utente: Ansible
diventa vero
compiti:
- Nome: Modifica il plug -in di autenticazione dell'utente di root mysql in mysql_native_password
Shell: mysql -u root -e 'aggiorna mysql.Set utente plugin = "mysql_native_password"
Dove user = "root" e host = "localhost" '
- Nome: Privilegi a filo
Shell: mysql -u root -e 'filo privileges'
- Nome: imposta la password di root mysql
mysql_user:
login_host: "localhost"
login_user: 'root'
password per il login: "
Nome: "root"
Password: 'mysql_pass'
Stato: presente

Una volta terminato, premere + X, seguito da Y E , per salvare il set_root_pass_ubuntu20.Yaml file.

Qui, ho definito tre compiti.

La prima attività modifica il plug -in di autenticazione del mysql radice utente da auth_socket A 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 di mysql_user Il modulo Ansible viene utilizzato per impostare rispettivamente il nome host di accesso MySQL, il nome utente e la password attuali MySQL. Per impostazione predefinita, il nome host di accesso MySQL (login_host) È Localhost, il nome utente di accesso (login_user) È radice, e l'accesso 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 mysql sarà il valore del mysql_pass Variabile di gruppo, che ho impostato prima, nel Group_vars/Ubuntu20 file.

Esegui il playbook set_root_pass_ubuntu20.Yaml con il seguente comando:

$ ansible-playbook playbooks/set_root_pass_ubuntu20.Yaml

Il playbook ha funzionato con successo, come puoi vedere nello screenshot qui sotto:

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

$ sudo mysql -u root

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

$ sudo mysql -u root -p

Digita la password di root impostata utilizzando Ansible e premere .

Dovresti essere effettuato l'accesso 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 LTS Distribuzioni Linux utilizzando Ansible. Questo articolo ha usato il mysql_user Modulo Ansible per l'impostazione della password di root mysql. È possibile utilizzare questo modulo per modificare la password di root MySQL, creare nuovi utenti MySQL e percepire molte più funzioni di gestione degli utenti.

Per ulteriori informazioni su mysql_user Modulo, controlla la documentazione ufficiale del modulo mysql_user.