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å
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å
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: centos8bruker: 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å
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å
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: centos8bruker: 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å
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: ubuntu20bruker: 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å
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å
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: ubuntu20bruker: 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å
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.