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_varsUna 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 hostsAggiungi 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.cfgDigitare le seguenti righe in Ansible.cfg file:
[impostazioni predefinite]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.YamlDigitare le seguenti righe in Install_Mysql_Centos8.Yaml file:
- Ospite: centos8Una 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.YamlCome 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 rootOra 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/centos8Aggiungi 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
Crea un nuovo playbook set_root_pass_centos8.Yaml con il seguente comando:
$ nano playbooks/set_root_pass_centos8.YamlDigitare le seguenti righe in set_root_pass_centos8.Yaml file:
- Ospite: centos8Una 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.YamlIl 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.YamlDigitare le seguenti righe in Install_Mysql_Ubuntu20.Yaml file:
- Host: Ubuntu20Una 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.YamlCome 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 rootOra 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/ubuntu20Aggiungi 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.YamlDigitare le seguenti righe in set_root_pass_ubuntu20.Yaml file:
- Host: Ubuntu20Una 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.YamlIl 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 rootPer 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 -pDigita 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.