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
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
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: centos8utente: 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
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
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: centos8utente: 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
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: ubuntu20utente: 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
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
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: ubuntu20utente: 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
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.