Hvordan angi MySQL Root -passord ved hjelp av Ansible

Hvordan angi MySQL Root -passord ved hjelp av Ansible
De fleste Linux -distribusjoner, inkludert Centos/RHEL og Ubuntu/Debian, angir ikke MySQL Root -passordet automatisk. Ettersom MySQL Root -passordet ikke automatisk settes, kan man logge seg på MySQL -konsollen som roten uten passord. Dette er ikke veldig bra for sikkerhet.

På Centos/RHEL kan du enkelt kjøre mysql_secure_installation Kommando for å sette opp et rotpassord. Men på Ubuntu 20.04 LTS, denne metoden fungerer ikke, ettersom MySQL bruker en annen autentiseringsplugin for rot bruker.

Denne artikkelen vil vise deg hvordan du setter opp et MySQL Root -passord på Centos 8 og Ubuntu 20.04 LTS Linux -distribusjoner ved hjelp av Ansible Modules.

Forutsetninger


Hvis du vil prøve eksemplene som er inkludert i denne artikkelen,

1) Du må ha Ansible installert på datamaskinen din.

2) Du må ha minst en Centos/RHEL 8 -vert eller en Ubuntu 20.04 LTS -vert konfigurert for ansettbar automatisering.

Det er mange artikler om Linuxhint dedikert til å installere Ansible og konfigurere verter for Ansible Automation. Du kan sjekke ut disse om nødvendig.

Sette opp en prosjektkatalog

Før vi går videre, vil vi sette opp en ny Ansible Project Directory, bare for å holde ting litt organisert.

For å opprette prosjektkatalogen mysql-root-pass/ Og alle nødvendige underkataloger (i din nåværende arbeidskatalog), kjør følgende kommando:

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

Når prosjektkatalogen er opprettet, navigerer du til prosjektkatalogen, som følger:

$ CD mysql-root-pass/

Lage en verter Lagerfil, som følger:

$ Nano -verter

Legg til verten IP eller DNS -navn på Centos/RHEL 8 eller Ubuntu 20.04 LTS -verter i inventarfilen (en vert per linje), som vist på skjermbildet nedenfor.

Når du er ferdig, lagre filen ved å trykke på + X, etterfulgt av Y og .

Her har jeg opprettet to grupper, centos8, og Ubuntu20. De centos8 Group har DNS -navnet på min centos 8 -vert, VM3.Nodekite.com; og Ubuntu20 Group har DNS -navnet på Ubuntu 20.04 LTS -vert, VM7.Nodekite.com.

Opprett en Ansible konfigurasjonsfil Ansible.CFG I prosjektkatalogen din, som følger:

$ Nano Ansible.CFG

Skriv inn følgende linjer i Ansible.CFG fil:

[standardverdier]
Inventory = verter
host_key_checking = falsk

Når du er ferdig, kan du lagre Ansible.CFG fil ved å trykke på + X, etterfulgt av Y og .

Prøv å pinge alle vertene du har lagt til i din verter Lagerfil, som følger:

$ ansible all -u ansible -m ping

Som du kan se, My Centos 8 -verten (VM3.Nodekite.com) og Ubuntu 20.04 LTS -vert (VM7.Nodekite.com) er tilgjengelig.

Installere MySQL og sette opp rotpassord på centOS/RHEL 8

Denne delen vil vise deg hvordan du installerer MySQL -databaseserveren og setter opp et rotpassord på CentOS 8 ved hjelp av Ansible. Den samme prosedyren skal fungere på RHEL 8.

Lag den nye Ansible Playbook install_mysql_centos8.Yaml i Playbooks/ Katalog, som følger:

$ nano playbooks/install_mysql_centos8.Yaml

Skriv inn følgende linjer i install_mysql_centos8.Yaml fil:

- Verter: Centos8
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Oppdater DNF Package Repository Cache
dnf:
Update_cache: sant
- Navn: Installer MySQL Server på CentOS 8
dnf:
Navn: MySQL-Server
Stat: Nåværende
- Navn: Installer MySQL -klient på CentOS 8
dnf:
Navn: MySQL
Stat: Nåværende
- Navn: Forsikre deg om at MySQLD -tjenesten kjører
service:
Navn: MySQLD
Stat: startet
Aktivert: True

- Navn: Installer Python3-Pymysql-bibliotek
dnf:
Navn: Python3-Pymysql
Stat: Nåværende

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde install_mysql_centos8.Yaml fil.

Linjen nedenfor ber Ansible om å kjøre spillboken install_mysql_centos8.Yaml på hver vert i centos8 gruppe.

Her har jeg definert 5 oppgaver.

Den første oppgaven oppdaterer DNF -pakkelagdebufferen til CentOS 8 ved hjelp av Ansible dnf modul.

Den andre oppgaven installerer MySQL -serverpakken mysql-server Bruke Ansible dnf modul.

Den tredje oppgaven installerer MySQL -klientpakken mysql Bruke Ansible dnf modul.

Den fjerde oppgaven sikrer at mysqld Tjenesten kjører og at den er lagt til systemoppstarten slik at den automatisk starter på oppstart.

Den femte oppgaven installerer Python 3 MySQL -biblioteket Pymysql. Dette er nødvendig for å få tilgang til MySQL fra Ansible.

Kjør install_mysql_centos8.Yaml Playbook, som følger:

$ ansible-playbook playbooks/install_mysql_centos8.Yaml

Som du ser, spillboken install_mysql_centos8.Yaml løp vellykket.

På min centos 8 -vert kan jeg få tilgang til mysql som rot Bruker uten passord, som du kan se på skjermbildet nedenfor:

$ sudo mysql -u root

Nå som MySQL -serveren er installert, er det på tide å sette opp et rotpassord for MySQL -serveren.

Opprett den nye gruppevariablefilen centos8 (I gruppe_vars/ katalog) for centos8 gruppe, som følger:

$ nano group_vars/centos8

Legg til en ny variabel mysql_pass med rotpassordet (i mitt tilfelle, hemmelig) Du vil angi, som vist på skjermbildet nedenfor.

Når du er ferdig, trykk + X, etterfulgt av Y og , For å lagre filen.

Lag en ny spillbok set_root_pass_centos8.Yaml med følgende kommando:

$ nano playbooks/set_root_pass_centos8.Yaml

Skriv inn følgende linjer i set_root_pass_centos8.Yaml fil:

- Verter: Centos8
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Angi MySQL Root -passord
mysql_user:
Login_host: 'Localhost'
LOGIN_USER: 'ROOT'
innloggings passord: "
Navn: 'Root'
Passord: 'mysql_pass'
Stat: Nåværende

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde set_root_pass_centos8.Yaml fil.

Denne spillboken bruker mysql_user Ansible -modul for å angi et MySQL Root -passord.

De login_host, LOGIN_USER, og innloggings passord Alternativer for mysql_user Ansible -modul brukes til å angi henholdsvis gjeldende MySQL -innloggingsvertsnavn, brukernavn og passord. Som standard MySQL Login Hostname (login_host) er den lokal vert, Innloggingsbrukernavnet (LOGIN_USER) er den rot, og påloggingen passord (innloggings passord) er tom () på centos 8.

De passord Alternativ for mysql_user Ansible -modul brukes til å angi et nytt MySQL Root -passord, her. MySQL Root -passordet vil være verdien av mysql_pass Gruppevariabel som ble satt tidligere.

Kjør lekeboken set_root_pass_centos8.Yaml med følgende kommando:

$ Ansible-Playbook Playbooks/set_root_pass_centos8.Yaml

Playbook kjørte vellykket, som sett på skjermdumpen nedenfor:

Som du kan se, kan jeg ikke lenger logge inn på MySQL -serveren uten rootpassord.

For å logge på MySQL -serveren som rot Bruker med et passord, kjør følgende kommando på CentOS 8 -verten din:

$ sudo mysql -u root -p

Skriv inn rotpassordet du har angitt ved hjelp av Ansible, og trykk .

Du bør være logget på MySQL -serveren som rot bruker.

Installere mysql og sette opp rotpassord på Ubuntu 20.04 LTS

Denne delen vil vise deg hvordan du installerer MySQL -databaseserveren og setter opp et rotpassord på Ubuntu 20.04 LTS ved hjelp av Ansible.

Lag en ny Ansible Playbook install_mysql_ubuntu20.Yaml i Playbooks/ Katalog, som følger:

$ nano playbooks/install_mysql_ubuntu20.Yaml

Skriv inn følgende linjer i install_mysql_ubuntu20.Yaml fil:

- Verter: Ubuntu20
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Oppdater APT Package Repository Cache
apt:
Update_cache: sant
- Navn: Installer MySQL -serveren på Ubuntu 20.04 LTS
apt:
Navn: MySQL-Server
Stat: Nåværende
- Navn: Installer MySQL -klient på Ubuntu 20.04 LTS
apt:
Navn: MySQL-CLIENT
Stat: Nåværende
- Navn: Forsikre deg om at MySQL -tjenesten kjører
service:
Navn: MySQL
Stat: startet
Aktivert: True
- Navn: Installer Python3-Pymysql-bibliotek
apt:
Navn: Python3-Pymysql
Stat: Nåværende

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde install_mysql_ubuntu20.Yaml fil.

Følgende linje ber Ansible om å kjøre spillboken install_mysql_ubuntu20.Yaml på hver vert i Ubuntu20 gruppe:

Her har jeg definert 5 oppgaver.

Den første oppgaven oppdaterer Apt Package Repository Cache of Ubuntu 20.04 LTS ved hjelp av Ansible Apt modul.

Den andre oppgaven installerer MySQL -serverpakken mysql-server Bruke Ansible Apt modul.

Den tredje oppgaven installerer MySQL -klientpakken mysql Bruke Ansible Apt modul.

Den fjerde oppgaven sørger for at mysql Tjenesten kjører og at den er lagt til systemoppstarten slik at den automatisk starter på oppstart.

Den femte oppgaven installerer Python 3 MySQL -biblioteket Pymysql. Dette er nødvendig for å få tilgang til mysql fra Ansible.

Kjør install_mysql_ubuntu20.Yaml Playbook, som følger:

$ ansible-playbook playbooks/install_mysql_ubuntu20.Yaml

Som du ser, spillboken install_mysql_ubuntu20.Yaml løp vellykket.

På min Ubuntu 20.04 LTS -vert, jeg har tilgang til mysql som rot Bruker uten passord, som du kan se på skjermbildet nedenfor.

$ sudo mysql -u root

Nå som MySQL -serveren er installert, er det på tide å sette opp et rotpassord for MySQL -serveren.

Opprett en ny gruppevariabel fil Ubuntu20 (I gruppe_vars/ katalog) for Ubuntu20 gruppe, som følger:

$ nano group_vars/ubuntu20

Legg til en ny variabel, mysql_pass, med rotpassordet (i mitt tilfelle, Verysecret) At du vil angi, som vist på skjermdumpen nedenfor.

Når du er ferdig, trykk + X, etterfulgt av Y og , For å lagre filen.

Lag en ny spillbok set_root_pass_ubuntu20.Yaml med følgende kommando:

$ nano playbooks/set_root_pass_ubuntu20.Yaml

Skriv inn følgende linjer i set_root_pass_ubuntu20.Yaml fil:

- Verter: Ubuntu20
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Endre autentiseringsplugin til mysql root -bruker til mysql_native_password
Shell: mysql -u root -e 'oppdatering mysql.brukersett plugin = "mysql_native_password"
Hvor bruker = "root" og host = "localhost" '
- Navn: Flush -privilegier
Shell: mysql -u root -e 'Flush Privileges'
- Navn: Angi MySQL Root -passord
mysql_user:
Login_host: 'Localhost'
LOGIN_USER: 'ROOT'
innloggings passord: "
Navn: 'Root'
Passord: 'mysql_pass'
Stat: Nåværende

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde set_root_pass_ubuntu20.Yaml fil.

Her har jeg definert tre oppgaver.

Den første oppgaven endrer autentiseringspluginen til MySQL rot bruker fra Auth_socket til mysql_native_password.

Den andre oppgaven laster inn alle privilegiene på nytt.

Den tredje oppgaven bruker mysql_user Ansible -modul for å angi et MySQL Root -passord.

I den tredje oppgaven, login_host, LOGIN_USER, og innloggings passord Alternativer for mysql_user Ansible -modul brukes til å angi henholdsvis gjeldende MySQL -innloggingsvertsnavn, brukernavn og passord. Som standard MySQL Login Hostname (login_host) er lokal vert, Innloggingsbrukernavnet (LOGIN_USER) er rot, og påloggingen passord (innloggings passord) er tom () på systemet.

Her, The passord Alternativ for mysql_user Ansible -modul brukes til å angi et nytt MySQL Root -passord. MySQL Root -passordet vil være verdien av mysql_pass gruppevariabel, som jeg satte tidligere, i group_vars/ubuntu20 fil.

Kjør lekeboken set_root_pass_ubuntu20.Yaml med følgende kommando:

$ Ansible-Playbook Playbooks/set_root_pass_ubuntu20.Yaml

Playbook kjørte vellykket, som du kan se på skjermdumpen nedenfor:

Som du kan se, kan jeg ikke lenger logge inn på MySQL -serveren uten rootpassord.

$ sudo mysql -u root

For å logge på MySQL -serveren som rotbruker med det angitte passordet, kjører du følgende kommando på Ubuntu 20.04 LTS -vert:

$ sudo mysql -u root -p

Skriv inn rotpassordet du har angitt ved hjelp av Ansible og trykk .

Du bør være logget på MySQL -serveren som rotbruker.

Konklusjon

Denne artikkelen viste deg hvordan du installerer MySQL -serveren og angir et MySQL Root -passord på Centos 8 og Ubuntu 20.04 LTS Linux -distribusjoner ved hjelp av Ansible. Denne artikkelen brukte mysql_user Ansible -modul for å sette opp MySQL Root -passordet. Du kan bruke denne modulen til å endre MySQL Root Password.

For mer informasjon om mysql_user Modul, sjekk den offisielle dokumentasjonen av MySQL_USER -modulen.