Ansible

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-rotpassordet automatisk. Ettersom MySQL-rotpassordet ikke blir satt automatisk, kan man logge på MySQL-konsollen som rot uten passord. Dette er ikke veldig bra for sikkerheten.

På CentOS / RHEL kan du enkelt kjøre mysql_secure_installation kommando for å sette opp et root-passord. Men på Ubuntu 20.04 LTS, fungerer denne metoden ikke, da MySQL bruker et annet autentiseringsprogram for rot bruker.

Denne artikkelen viser deg hvordan du setter opp et MySQL-root-passord på CentOS 8 og Ubuntu 20.04 LTS Linux-distribusjoner ved hjelp av Ansible-moduler.

Forutsetninger


Hvis du vil prøve eksemplene 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 Ansible automatisering.

Det er mange artikler om LinuxHint dedikert til å installere Ansible og konfigurere verter for Ansible automatisering. 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-prosjektkatalog, bare for å holde ting litt organisert.

Å lage 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 inventarfil, som følger:

$ nano verter

Legg til verts-IP- eller DNS-navnene til CentOS / RHEL 8 eller Ubuntu 20.04 LTS-verter i lagerfilen (en vert per linje), som vist på skjermbildet nedenfor.

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

Her har jeg opprettet to grupper, centos8, og ubuntu20. De centos8 gruppen har DNS-navnet til min CentOS 8-vert, vm3.nodekite.com; og ubuntu20 gruppen har DNS-navnet til min 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:

[standard]
inventar = verter
host_key_checking = Usann

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

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

$ ansible all -u ansible -m ping

Som du kan se, er min CentOS 8-vert (vm3.nodekite.com) og Ubuntu 20.04 LTS-vert (vm7.nodekite.com) er tilgjengelige.

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

Denne delen viser deg hvordan du installerer MySQL-databaseserveren og konfigurerer et root-passord på CentOS 8 ved hjelp av Ansible. Den samme prosedyren skal fungere på RHEL 8.

Lag den nye Ansible-spillboken install_mysql_centos8.yaml i lekebøker / 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-pakke depotbuffer
dnf:
update_cache: Sant
- navn: Installer MySQL-server på CentOS 8
dnf:
navn: mysql-server
tilstand: til stede
- navn: Installer MySQL-klient på CentOS 8
dnf:
navn: mysql
tilstand: til stede
- navn: Forsikre deg om at mysqld-tjenesten kjører
service:
navn: mysqld
tilstand: startet
aktivert: Sant

- navn: Installer python3-PyMySQL-bibliotek
dnf:
navn: python3-PyMySQL
tilstand: til stede

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde install_mysql_centos8.yaml fil.

Linjen nedenfor forteller Ansible å 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-pakkelagerbufferen til CentOS 8 ved hjelp av Ansible dnf modul.

Den andre oppgaven installerer MySQL-serverpakken mysql-server ved hjelp av Ansible dnf modul.

Den tredje oppgaven installerer MySQL-klientpakken mysql ved hjelp av Ansible dnf modul.

Den fjerde oppgaven sørger for at mysqld tjenesten kjører, og at den er lagt til systemets oppstart, slik at den automatisk starter ved oppstart.

Den femte oppgaven installerer Python 3 MySQL-biblioteket pymysql. Dette kreves for å få tilgang til MySQL fra Ansible.

Kjør install_mysql_centos8.yaml spillbok, som følger:

$ ansible-playbook playbooks / install_mysql_centos8.yaml

Som du kan se, playbook 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 rot

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

Opprett den nye gruppevariabelfilen centos8 (i group_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 sette, som vist på skjermbildet nedenfor.

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

Lag en ny lekebok 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'
tilstand: til stede

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde set_root_pass_centos8.yaml fil.

Denne lekeboken bruker mysql_user Ansible modul for å angi et MySQL root-passord.

De login_host, login_user, og innloggings passord alternativene til mysql_user Ansible-modul brukes til å angi henholdsvis gjeldende MySQL-påloggingsvertsnavn, brukernavn og passord. Som standard er MySQL-påloggingsvertsnavnet (login_host) er den lokal vert, påloggingsbrukernavnet (login_user) er den rot, og påloggingen passord (innloggings passord) er tom () på CentOS 8.

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

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

$ ansible-playbook playbooks / set_root_pass_centos8.yaml

Spillboken kjørte vellykket, som vist på skjermbildet nedenfor:

Som du kan se, kan jeg ikke lenger logge på MySQL-serveren uten et root-passord.

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

$ sudo mysql -u root -p

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

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

Installere MySQL og sette opp root-passord på Ubuntu 20.04 LTS

Denne delen viser deg hvordan du installerer MySQL-databaseserveren og setter opp et root-passord på Ubuntu 20.04 LTS ved bruk av Ansible.

Lag en ny Ansible-spillbok install_mysql_ubuntu20.yaml i lekebøker / 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-pakke depotbuffer
apt:
update_cache: Sant
- navn: Installer MySQL-server på Ubuntu 20.04 LTS
apt:
navn: mysql-server
tilstand: til stede
- navn: Installer MySQL-klient på Ubuntu 20.04 LTS
apt:
navn: mysql-client
tilstand: til stede
- navn: Kontroller at mysql-tjenesten kjører
service:
navn: mysql
tilstand: startet
aktivert: Sant
- navn: Installer python3-pymysql-biblioteket
apt:
navn: python3-pymysql
tilstand: til stede

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde install_mysql_ubuntu20.yaml fil.

Den følgende linjen forteller Ansible å 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-pakkeoppbevaringsbufferen til Ubuntu 20.04 LTS ved bruk av Ansible apt modul.

Den andre oppgaven installerer MySQL-serverpakken mysql-server ved hjelp av Ansible apt modul.

Den tredje oppgaven installerer MySQL-klientpakken mysql ved hjelp av Ansible apt modul.

Den fjerde oppgaven sørger for at mysql tjenesten kjører, og at den er lagt til systemets oppstart, slik at den automatisk starter ved oppstart.

Den femte oppgaven installerer Python 3 MySQL-biblioteket pymysql. Dette kreves for å få tilgang til MySQL fra Ansible.

Kjør install_mysql_ubuntu20.yaml spillbok, som følger:

$ ansible-playbook playbooks / install_mysql_ubuntu20.yaml

Som du kan se, playbook install_mysql_ubuntu20.yaml løp vellykket.

På min Ubuntu 20.04 LTS-vert, jeg kan få tilgang til MySQL som rot bruker uten passord, som du kan se på skjermbildet nedenfor.

$ sudo mysql -u rot

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

Opprett en ny gruppevariabelfil ubuntu20 (i group_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) som du vil sette, som vist på skjermbildet nedenfor.

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

Lag en ny lekebok 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 godkjenningsprogrammet til MySQL-rotbruker til mysql_native_password
shell: mysql -u root -e 'OPPDATER mysql.bruker SET plugin = "mysql_native_password"
WHERE bruker = "root" OG vert = "localhost" '
- navn: Flush Privileges
skall: 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'
tilstand: til stede

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde set_root_pass_ubuntu20.yaml fil.

Her har jeg definert tre oppgaver.

Den første oppgaven endrer godkjenningsprogrammet til MySQL rot bruker fra auth_socket til mysql_native_password.

Den andre oppgaven laster alle privilegiene på nytt.

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

I den tredje oppgaven, den login_host, login_user, og innloggings passord alternativene til mysql_user Ansible-modul brukes til å angi henholdsvis gjeldende MySQL-påloggingsvertsnavn, brukernavn og passord. Som standard er MySQL-påloggingsvertsnavnet (login_host) er lokal vert, påloggingsbrukernavnet (login_user) er rot, og påloggingen passord (innloggings passord) er tom () på systemet.

Her, den passord alternativet til mysql_user Ansible-modul brukes til å angi et nytt MySQL-root-passord. MySQL root-passordet vil være verdien av mysql_pass gruppe variabel, 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

Spillboken kjørte vellykket, som du kan se på skjermbildet nedenfor:

Som du kan se, kan jeg ikke lenger logge på MySQL-serveren uten et root-passord.

$ sudo mysql -u rot

For å logge på MySQL-serveren som rotbruker med angitt passord, kjør 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 på .

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-passordet, opprette nye MySQL-brukere, og derfor mange flere brukeradministrasjonsfunksjoner.

For mer informasjon om mysql_user modul, sjekk den offisielle dokumentasjonen til mysql_user-modulen.

Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...