Synlig

Sådan indstilles MySQL-rodadgangskode ved hjælp af Ansible

Sådan indstilles MySQL-rodadgangskode ved hjælp af Ansible
De fleste Linux-distributioner, inklusive CentOS / RHEL og Ubuntu / Debian, indstiller ikke MySQL-rodadgangskoden automatisk. Da MySQL-rodadgangskoden ikke automatisk er indstillet, kan man logge på MySQL-konsollen som roden uden adgangskode. Dette er ikke særlig godt for sikkerheden.

På CentOS / RHEL kan du nemt køre mysql_secure_installation kommando til at oprette en rodadgangskode. Men på Ubuntu 20.04 LTS, denne metode fungerer ikke, da MySQL bruger et andet godkendelsesplugin til rod bruger.

Denne artikel viser dig, hvordan du opretter en MySQL-rodadgangskode på CentOS 8 og Ubuntu 20.04 LTS Linux-distributioner ved hjælp af Ansible-moduler.

Forudsætninger


Hvis du vil prøve eksemplerne i denne artikel,

1) Du skal have Ansible installeret på din computer.

2) Du skal have mindst en CentOS / RHEL 8-vært eller en Ubuntu 20.04 LTS-vært konfigureret til Ansible automatisering.

Der er mange artikler om LinuxHint dedikeret til installation af Ansible og konfigurering af værter til Ansible-automatisering. Du kan tjekke disse ud, hvis det er nødvendigt.

Opsætning af et projektmappe

Inden vi går videre, opretter vi en ny Ansible projektmappe, bare for at holde tingene lidt organiserede.

For at oprette projektmappen mysql-root-pass / og alle de krævede underkataloger (i din nuværende arbejdsmappe), kør følgende kommando:

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

Når projektmappen er oprettet, skal du navigere til projektmappen som følger:

$ cd mysql-root-pass /

Lave en værter opgørelsesfil som følger:

$ nano værter

Tilføj værts-IP- eller DNS-navne på din CentOS / RHEL 8 eller Ubuntu 20.04 LTS-værter i lagerfilen (en vært pr. Linje) som vist i skærmbilledet nedenfor.

Når du er færdig, skal du gemme filen ved at trykke på + x, efterfulgt af Y og .

Her har jeg oprettet to grupper, centos8, og ubuntu20. Det centos8 gruppe har DNS-navnet på min CentOS 8 vært, vm3.nodekite.com; og ubuntu20 gruppe har DNS-navnet på min Ubuntu 20.04 LTS vært, vm7.nodekite.com.

Opret en Ansible konfigurationsfil ansible.cfg i din projektmappe som følger:

$ nano ansible.cfg

Skriv følgende linjer i ansible.cfg fil:

[standard]
beholdning = værter
host_key_checking = Falsk

Når du er færdig, skal du gemme ansible.cfg fil ved at trykke på + x, efterfulgt af Y og .

Prøv at pinge alle de værter, du har tilføjet i din værter opgørelsesfil som følger:

$ ansible all -u ansible -m ping

Som du kan se, er min CentOS 8-vært (vm3.nodekite.com) og Ubuntu 20.04 LTS-vært (vm7.nodekite.com) er tilgængelige.

Installation af MySQL og opsætning af rodadgangskode på CentOS / RHEL 8

Dette afsnit viser dig, hvordan du installerer MySQL-databaseserveren og opsætter en rodadgangskode på CentOS 8 ved hjælp af Ansible. Den samme procedure skal fungere på RHEL 8.

Opret den nye Ansible playbook install_mysql_centos8.yaml i legebøger / katalog, som følger:

$ nano playbooks / install_mysql_centos8.yaml

Skriv følgende linjer i install_mysql_centos8.yaml fil:

- værter: centos8
bruger: ansible
blive: Sandt
opgaver:
- navn: Opdater DNF-pakkeopbevaringscache
dnf:
update_cache: Sandt
- 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: Sørg for, at mysqld-tjenesten kører
service:
navn: mysqld
tilstand: startet
aktiveret: Sandt

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

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde install_mysql_centos8.yaml fil.

Linjen nedenfor fortæller Ansible at køre playbook install_mysql_centos8.yaml på hver vært i centos8 gruppe.

Her har jeg defineret 5 opgaver.

Den første opgave opdaterer DNF-pakkeopbevaringscachen for CentOS 8 ved hjælp af Ansible dnf modul.

Den anden opgave installerer MySQL-serverpakken mysql-server ved hjælp af Ansible dnf modul.

Den tredje opgave installerer MySQL-klientpakken mysql ved hjælp af Ansible dnf modul.

Den fjerde opgave sikrer, at mysqld tjenesten kører, og at den er føjet til systemets opstart, så den automatisk starter ved opstart.

Den femte opgave installerer Python 3 MySQL-biblioteket pymysql. Dette er nødvendigt for at få adgang til MySQL fra Ansible.

Kør install_mysql_centos8.yaml playbook som følger:

$ ansible-playbook playbooks / install_mysql_centos8.yaml

Som du kan se, playbook install_mysql_centos8.yaml løb med succes.

På min CentOS 8-vært kan jeg få adgang til MySQL som rod bruger uden adgangskode, som du kan se på skærmbilledet nedenfor:

$ sudo mysql -u rod

Nu hvor MySQL-serveren er installeret, er det tid til at oprette en root-adgangskode til MySQL-serveren.

Opret den nye gruppevariabelfil centos8 (i gruppe_varsler / bibliotek) til centos8 gruppe som følger:

$ nano group_vars / centos8

Tilføj en ny variabel mysql_pass med rodadgangskoden (i mit tilfælde, hemmelighed) du gerne vil indstille, som vist på skærmbilledet nedenfor.

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at gemme filen.

Opret en ny playbook set_root_pass_centos8.yaml med følgende kommando:

$ nano playbooks / set_root_pass_centos8.yaml

Skriv følgende linjer i set_root_pass_centos8.yaml fil:

- værter: centos8
bruger: ansible
blive: Sandt
opgaver:
- navn: Indstil MySQL-rodadgangskode
mysql_user:
login_host: 'localhost'
login_user: 'root'
login kodeord: "
navn: 'root'
adgangskode: 'mysql_pass'
tilstand: til stede

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde set_root_pass_centos8.yaml fil.

Denne playbook bruger mysql_user Ansible modul til at indstille en MySQL rodadgangskode.

Det login_host, login_bruger, og login kodeord muligheder for mysql_user Ansible-modul bruges til at indstille henholdsvis det aktuelle MySQL-loginværtsnavn, brugernavn og adgangskode. Som standard er MySQL-loginværtsnavnet (login_host) er lokal vært, login-brugernavnet (login_bruger) er rod, og login adgangskode (login kodeord) er tom () på CentOS 8.

Det adgangskode mulighed for mysql_user Ansible-modul bruges til at indstille en ny MySQL-rodadgangskode her. MySQL-rodadgangskoden er værdien af mysql_pass gruppe variabel, der blev indstillet tidligere.

Kør playbook set_root_pass_centos8.yaml med følgende kommando:

$ ansible-playbook playbooks / set_root_pass_centos8.yaml

Playbook kørte med succes, som det fremgår af skærmbilledet nedenfor:

Som du kan se, kan jeg ikke længere logge ind på MySQL-serveren uden en root-adgangskode.

For at logge på MySQL-serveren som rod bruger med en adgangskode, kør følgende kommando på din CentOS 8-vært:

$ sudo mysql -u root -p

Indtast root-adgangskoden, du har angivet ved hjælp af Ansible, og tryk på .

Du skal være logget ind på MySQL-serveren som rod bruger.

Installation af MySQL og opsætning af root-adgangskode på Ubuntu 20.04 LTS

Dette afsnit viser dig, hvordan du installerer MySQL-databaseserveren og opsætter en rodadgangskode på Ubuntu 20.04 LTS ved hjælp af Ansible.

Opret en ny Ansible playbook install_mysql_ubuntu20.yaml i legebøger / katalog, som følger:

$ nano playbooks / install_mysql_ubuntu20.yaml

Skriv følgende linjer i install_mysql_ubuntu20.yaml fil:

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Opdater APT-pakkeopbevaringscache
apt:
update_cache: Sandt
- 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: Sørg for, at mysql-tjenesten kører
service:
navn: mysql
tilstand: startet
aktiveret: Sandt
- navn: Installer python3-pymysql-bibliotek
apt:
navn: python3-pymysql
tilstand: til stede

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde install_mysql_ubuntu20.yaml fil.

Den følgende linje beder Ansible om at køre playbook install_mysql_ubuntu20.yaml på hver vært i ubuntu20 gruppe:

Her har jeg defineret 5 opgaver.

Den første opgave opdaterer APT-pakkeopbevaringscachen til Ubuntu 20.04 LTS ved hjælp af Ansible apt modul.

Den anden opgave installerer MySQL-serverpakken mysql-server ved hjælp af Ansible apt modul.

Den tredje opgave installerer MySQL-klientpakken mysql ved hjælp af Ansible apt modul.

Den fjerde opgave sørger for, at mysql tjenesten kører, og at den er føjet til systemets opstart, så den automatisk starter ved opstart.

Den femte opgave installerer Python 3 MySQL-biblioteket pymysql. Dette er nødvendigt for at få adgang til MySQL fra Ansible.

Kør install_mysql_ubuntu20.yaml playbook som følger:

$ ansible-playbook playbooks / install_mysql_ubuntu20.yaml

Som du kan se, playbook install_mysql_ubuntu20.yaml løb med succes.

På min Ubuntu 20.04 LTS vært, jeg kan få adgang til MySQL som rod bruger uden adgangskode, som du kan se på skærmbilledet nedenfor.

$ sudo mysql -u rod

Nu hvor MySQL-serveren er installeret, er det tid til at oprette en root-adgangskode til MySQL-serveren.

Opret en ny gruppevariabelfil ubuntu20 (i gruppe_varsler / bibliotek) til ubuntu20 gruppe som følger:

$ nano group_vars / ubuntu20

Tilføj en ny variabel, mysql_pass, med rodadgangskoden (i mit tilfælde, meget hemmeligt), som du gerne vil indstille, som vist på skærmbilledet nedenfor.

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at gemme filen.

Opret en ny playbook set_root_pass_ubuntu20.yaml med følgende kommando:

$ nano playbooks / set_root_pass_ubuntu20.yaml

Skriv følgende linjer i set_root_pass_ubuntu20.yaml fil:

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Skift godkendelsesplugin til MySQL root-bruger til mysql_native_password
shell: mysql -u root -e 'OPDATER mysql.bruger SET plugin = "mysql_native_password"
WHERE bruger = "root" OG vært = "localhost" '
- navn: Flush Privileges
shell: mysql -u root -e 'FLUSH PRIVILEGES'
- navn: Indstil MySQL-rodadgangskode
mysql_user:
login_host: 'localhost'
login_user: 'root'
login kodeord: "
navn: 'root'
adgangskode: 'mysql_pass'
tilstand: til stede

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde set_root_pass_ubuntu20.yaml fil.

Her har jeg defineret tre opgaver.

Den første opgave ændrer MySQL-godkendelses-pluginet rod bruger fra auth_socket til mysql_native_password.

Den anden opgave genindlæser alle privilegier.

Den tredje opgave bruger mysql_user Anvendeligt modul til at indstille en MySQL-rodadgangskode.

I den tredje opgave, den login_host, login_bruger, og login kodeord muligheder for mysql_user Ansible-modul bruges til at indstille henholdsvis det aktuelle MySQL-loginværtsnavn, brugernavn og adgangskode. Som standard er MySQL-loginværtsnavnet (login_host) er lokal vært, login-brugernavnet (login_bruger) er rod, og login adgangskode (login kodeord) er tom () på systemet.

Her, den adgangskode mulighed for mysql_user Ansible-modul bruges til at indstille en ny MySQL-rodadgangskode. MySQL-rodadgangskoden er værdien af mysql_pass gruppe variabel, som jeg angav tidligere, i group_vars / ubuntu20 fil.

Kør playbook set_root_pass_ubuntu20.yaml med følgende kommando:

$ ansible-playbook playbooks / set_root_pass_ubuntu20.yaml

Playbook kørte med succes, som du kan se på skærmbilledet nedenfor:

Som du kan se, kan jeg ikke længere logge ind på MySQL-serveren uden en root-adgangskode.

$ sudo mysql -u rod

For at logge ind på MySQL-serveren som rodbruger med den indstillede adgangskode skal du køre følgende kommando på din Ubuntu 20.04 LTS vært:

$ sudo mysql -u root -p

Indtast root-adgangskoden, du har indstillet ved hjælp af Ansible, og tryk på .

Du skal være logget ind på MySQL-serveren som rodbruger.

Konklusion

Denne artikel viste dig, hvordan du installerer MySQL-serveren og indstiller en MySQL-rodadgangskode på CentOS 8 og Ubuntu 20.04 LTS Linux-distributioner ved hjælp af Ansible. Denne artikel brugte mysql_user Anvendeligt modul til opsætning af MySQL root-adgangskoden. Du kan bruge dette modul til at ændre MySQL-root-adgangskoden, oprette nye MySQL-brugere og derfor mange flere brugeradministrationsfunktioner.

For mere information om mysql_user modul, skal du kontrollere den officielle dokumentation for mysql_user-modulet.

Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...