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å
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å
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: centos8bruger: 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å
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å
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: centos8bruger: 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å
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: ubuntu20bruger: 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å
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å
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: ubuntu20bruger: 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å
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.