Ansible

Hoe MySQL Root-wachtwoord in te stellen met Ansible

Hoe MySQL Root-wachtwoord in te stellen met Ansible
De meeste Linux-distributies, waaronder CentOS/RHEL en Ubuntu/Debian, stellen het MySQL-rootwachtwoord niet automatisch in. Omdat het MySQL-rootwachtwoord niet automatisch wordt ingesteld, kan men zonder wachtwoord inloggen op de MySQL-console als root. Dit is niet erg goed voor de veiligheid.

Op CentOS/RHEL kunt u eenvoudig de mysql_secure_installation commando om een ​​root-wachtwoord in te stellen. Maar op Ubuntu 20.04 LTS, deze methode werkt niet, omdat MySQL een andere authenticatie-plug-in gebruikt voor de wortel gebruiker.

In dit artikel wordt uitgelegd hoe u een MySQL-rootwachtwoord instelt op CentOS 8 en Ubuntu 20.04 LTS Linux-distributies met Ansible-modules.

Vereisten


Als je de voorbeelden in dit artikel wilt uitproberen,

1) Je moet Ansible op je computer hebben geïnstalleerd.

2) U moet minimaal een CentOS/RHEL 8-host of een Ubuntu 20 . hebben.04 LTS-host geconfigureerd voor Ansible-automatisering.

Er zijn veel artikelen over LinuxHint gewijd aan het installeren van Ansible en het configureren van hosts voor Ansible-automatisering. U kunt deze indien nodig bekijken.

Een projectdirectory instellen

Voordat we verder gaan, zullen we een nieuwe Ansible-projectdirectory opzetten, gewoon om de zaken een beetje georganiseerd te houden.

De projectdirectory maken: mysql-root-pass/ en alle vereiste subdirectories (in uw huidige werkdirectory), voert u de volgende opdracht uit:

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

Nadat de projectdirectory is gemaakt, navigeert u als volgt naar de projectdirectory:

$ cd mysql-root-pass/

Maak een gastheren inventarisbestand, als volgt:

$ nano-hosts

Voeg de host-IP- of DNS-namen toe van uw CentOS/RHEL 8 of Ubuntu 20.04 LTS-hosts in het inventarisbestand (één host per regel), zoals weergegeven in de onderstaande schermafbeelding.

Als u klaar bent, slaat u het bestand op door op . te drukken + X, gevolgd door Y en .

Hier heb ik twee groepen gemaakt, centos8, en ubuntu20. De centos8 groep heeft de DNS-naam van mijn CentOS 8-host, vm3.nodekite.com; en de ubuntu20 groep heeft de DNS-naam van mijn Ubuntu 20.04 LTS-host, vm7.nodekite.com.

Een Ansible-configuratiebestand maken weerbaar.cfg in uw projectdirectory, als volgt:

$ nano mogelijk.cfg

Typ de volgende regels in de weerbaar.cfg het dossier:

[standaard]
inventaris           = hosts
host_key_checking   = False

Als u klaar bent, slaat u de weerbaar.cfg bestand door op te drukken + X, gevolgd door Y en .

Probeer alle hosts die je in je . hebt toegevoegd te pingen gastheren inventarisbestand, als volgt:

$ ansible all -u ansible -m ping

Zoals je kunt zien, is de my CentOS 8-host (vm3.nodekite.com) en Ubuntu 20.04 LTS-host (vm7.nodekite.com) zijn toegankelijk.

MySQL installeren en rootwachtwoord instellen op CentOS/RHEL 8

In dit gedeelte wordt uitgelegd hoe u de MySQL-databaseserver installeert en een rootwachtwoord instelt op CentOS 8 met behulp van Ansible. Dezelfde procedure zou moeten werken op RHEL 8.

Het nieuwe Ansible-playbook maken install_mysql_centos8.yaml in de draaiboeken/ directory, als volgt:

$ nano playbooks/install_mysql_centos8.yaml

Typ de volgende regels in de install_mysql_centos8.yaml het dossier:

- hosts: centos8
gebruiker: ansible
worden: True
taken:
- naam: Update DNF Pakket repository cache
dnf:
update_cache: True
- naam: MySQL-server installeren op CentOS 8
dnf:
naam: mysql-server
staat: aanwezig
- naam: MySQL-client installeren op CentOS 8
dnf:
naam: mysql
staat: aanwezig
- naam: Zorg ervoor dat de mysqld-service actief is
onderhoud:
naam: mysqld
staat: begonnen
ingeschakeld: True

- naam: installeer python3-PyMySQL-bibliotheek
dnf:
naam: python3-PyMySQL
staat: aanwezig

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden install_mysql_centos8.yaml het dossier.

De regel hieronder vertelt Ansible om het playbook uit te voeren install_mysql_centos8.yaml op elke host in de centos8 groep.

Hier heb ik 5 taken gedefinieerd.

De eerste taak werkt de DNF-pakketrepository-cache van CentOS 8 bij met behulp van de Ansible dnf module.

De tweede taak installeert het MySQL-serverpakket mysql-server de Ansible gebruiken dnf module.

De derde taak installeert het MySQL-clientpakket mysql de Ansible gebruiken dnf module.

De vierde taak zorgt ervoor dat de mysqld service actief is en dat deze is toegevoegd aan het opstarten van het systeem, zodat deze automatisch start bij het opstarten.

De vijfde taak installeert de Python 3 MySQL-bibliotheek pymysql. Dit is vereist voor toegang tot MySQL vanuit Ansible.

Voer de ... uit install_mysql_centos8.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_mysql_centos8.yaml

Zoals je kunt zien, het speelboek install_mysql_centos8.yaml succesvol verlopen.

Op mijn CentOS 8-host heb ik toegang tot MySQL als de wortel gebruiker zonder wachtwoord, zoals je kunt zien in de onderstaande schermafbeelding:

$ sudo mysql -u root

Nu de MySQL-server is geïnstalleerd, is het tijd om een ​​root-wachtwoord in te stellen voor de MySQL-server.

Maak het nieuwe groepsvariabelenbestand aan centos8 (in de group_vars/ map) voor de centos8 groep, als volgt:

$ nano group_vars/centos8

Een nieuwe variabele toevoegen mysql_pass met het root-wachtwoord (in mijn geval, geheim) die u wilt instellen, zoals weergegeven in de onderstaande schermafbeelding.

Als u klaar bent, drukt u op + X, gevolgd door Y en , om het bestand op te slaan.

Een nieuw draaiboek maken set_root_pass_centos8.yaml met het volgende commando:

$ nano playbooks/set_root_pass_centos8.yaml

Typ de volgende regels in de set_root_pass_centos8.yaml het dossier:

- hosts: centos8
gebruiker: ansible
worden: True
taken:
- naam: MySQL root-wachtwoord instellen
mysql_user:
login_host: 'localhost'
login_user: 'root'
login wachtwoord: "
naam: 'wortel'
wachtwoord: ' mysql_pass '
staat: aanwezig

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden set_root_pass_centos8.yaml het dossier.

Dit draaiboek maakt gebruik van de mysql_user Ansible-module om een ​​MySQL-rootwachtwoord in te stellen.

De login_host, login_gebruiker, en login wachtwoord opties van de mysql_user Ansible-module wordt gebruikt om respectievelijk de huidige MySQL-login-hostnaam, gebruikersnaam en wachtwoord in te stellen. Standaard is de MySQL-login-hostnaam (login_host) is de localhost, de login gebruikersnaam (login_gebruiker) is de wortel, en de login wachtwoord (login wachtwoord) is leeg () op CentOS 8.

De wachtwoord optie van de mysql_user De Ansible-module wordt gebruikt om een ​​nieuw MySQL-rootwachtwoord in te stellen, hier:. Het MySQL-rootwachtwoord is de waarde van de mysql_pass groepsvariabele die eerder was ingesteld.

Voer het draaiboek uit set_root_pass_centos8.yaml met het volgende commando:

$ ansible-playbook playbooks/set_root_pass_centos8.yaml

Het playbook is succesvol uitgevoerd, zoals te zien is in de onderstaande schermafbeelding:

Zoals je kunt zien, kan ik niet langer inloggen op de MySQL-server zonder root-wachtwoord.

Aanmelden bij de MySQL-server als de server wortel gebruiker met een wachtwoord, voert u de volgende opdracht uit op uw CentOS 8-host:

$ sudo mysql -u root -p

Typ het root-wachtwoord dat je hebt ingesteld met Ansible en druk op .

U moet zijn aangemeld bij de MySQL-server als de wortel gebruiker.

MySQL installeren en rootwachtwoord instellen op Ubuntu 20.04 LTS

In dit gedeelte wordt uitgelegd hoe u de MySQL-databaseserver installeert en een rootwachtwoord instelt op Ubuntu 20.04 LTS met Ansible.

Een nieuw Ansible-playbook maken install_mysql_ubuntu20.yaml in de draaiboeken/ directory, als volgt:

$ nano playbooks/install_mysql_ubuntu20.yaml

Typ de volgende regels in de install_mysql_ubuntu20.yaml het dossier:

- hosts: ubuntu20
gebruiker: ansible
worden: True
taken:
- naam: Update APT Package repository cache
geschikt:
update_cache: True
- naam: MySQL-server installeren op Ubuntu 20.04 LTS
geschikt:
naam: mysql-server
staat: aanwezig
- naam: MySQL-client installeren op Ubuntu 20.04 LTS
geschikt:
naam: mysql-client
staat: aanwezig
- naam: Zorg ervoor dat de mysql-service actief is
onderhoud:
naam: mysql
staat: begonnen
ingeschakeld: True
- naam: installeer python3-pymysql-bibliotheek
geschikt:
naam: python3-pymysql
staat: aanwezig

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden install_mysql_ubuntu20.yaml het dossier.

De volgende regel vertelt Ansible om het playbook uit te voeren install_mysql_ubuntu20.yaml op elke host in de ubuntu20 groep:

Hier heb ik 5 taken gedefinieerd.

De eerste taak werkt de APT-pakketrepository-cache van Ubuntu 20 . bij.04 LTS met behulp van de Ansible geschikt module.

De tweede taak installeert het MySQL-serverpakket mysql-server de Ansible gebruiken geschikt module.

De derde taak installeert het MySQL-clientpakket mysql de Ansible gebruiken geschikt module.

De vierde taak zorgt ervoor dat de mysql service actief is en dat deze is toegevoegd aan het opstarten van het systeem, zodat deze automatisch start bij het opstarten.

De vijfde taak installeert de Python 3 MySQL-bibliotheek pymysql. Dit is vereist om toegang te krijgen tot MySQL vanuit Ansible.

Voer de ... uit install_mysql_ubuntu20.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_mysql_ubuntu20.yaml

Zoals je kunt zien, het speelboek install_mysql_ubuntu20.yaml succesvol verlopen.

Op mijn Ubuntu 20.04 LTS-host, ik heb toegang tot MySQL als de wortel gebruiker zonder wachtwoord, zoals je kunt zien in de onderstaande schermafbeelding.

$ sudo mysql -u root

Nu de MySQL-server is geïnstalleerd, is het tijd om een ​​root-wachtwoord in te stellen voor de MySQL-server.

Een nieuw groepsvariabelenbestand maken ubuntu20 (in de group_vars/ map) voor de ubuntu20 groep, als volgt:

$ nano group_vars/ubuntu20

Een nieuwe variabele toevoegen, mysql_pass, met het root-wachtwoord (in mijn geval, heel geheim) die u wilt instellen, zoals weergegeven in de onderstaande schermafbeelding.

Als u klaar bent, drukt u op + X, gevolgd door Y en , om het bestand op te slaan.

Een nieuw draaiboek maken set_root_pass_ubuntu20.yaml met het volgende commando:

$ nano playbooks/set_root_pass_ubuntu20.yaml

Typ de volgende regels in de set_root_pass_ubuntu20.yaml het dossier:

- hosts: ubuntu20
gebruiker: ansible
worden: True
taken:
- naam: verander de authenticatie-plug-in van MySQL-rootgebruiker in mysql_native_password
shell: mysql -u root -e 'UPDATE mysql.gebruiker SET plugin="mysql_native_password"
WAAR gebruiker = "root" EN host = "localhost"'
- naam: Flush Privileges
shell: mysql -u root -e 'FLUSH PRIVILEGES'
- naam: MySQL root-wachtwoord instellen
mysql_user:
login_host: 'localhost'
login_user: 'root'
login wachtwoord: "
naam: 'wortel'
wachtwoord: ' mysql_pass '
staat: aanwezig

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden set_root_pass_ubuntu20.yaml het dossier.

Hier heb ik drie taken gedefinieerd.

De eerste taak verandert de authenticatie-plug-in van de MySQL wortel gebruiker van auth_socket naar mysql_native_password.

De tweede taak laadt alle privileges opnieuw.

De derde taak maakt gebruik van de mysql_user Ansible-module om een ​​MySQL-rootwachtwoord in te stellen.

In de derde taak, de login_host, login_gebruiker, en login wachtwoord opties van de mysql_user De Ansible-module wordt gebruikt om respectievelijk de huidige MySQL-login-hostnaam, gebruikersnaam en wachtwoord in te stellen. Standaard is de MySQL-login-hostnaam (login_host) is localhost, de login gebruikersnaam (login_gebruiker) is wortel, en de login wachtwoord (login wachtwoord) is leeg () op het systeem.

Hier de wachtwoord optie van de mysql_user Ansible-module wordt gebruikt om een ​​nieuw MySQL-rootwachtwoord in te stellen. Het MySQL-rootwachtwoord is de waarde van de mysql_pass groepsvariabele, die ik eerder heb ingesteld, in de group_vars/ubuntu20 het dossier.

Voer het draaiboek uit set_root_pass_ubuntu20.yaml met het volgende commando:

$ ansible-playbook playbooks/set_root_pass_ubuntu20.yaml

Het playbook is succesvol uitgevoerd, zoals je kunt zien in de onderstaande schermafbeelding:

Zoals je kunt zien, kan ik niet langer inloggen op de MySQL-server zonder een root-wachtwoord.

$ sudo mysql -u root

Om in te loggen op de MySQL-server als rootgebruiker met het ingestelde wachtwoord, voert u de volgende opdracht uit op uw Ubuntu 20.04 LTS-host:

$ sudo mysql -u root -p

Typ het root-wachtwoord dat je hebt ingesteld met Ansible en druk op .

Je moet ingelogd zijn op de MySQL-server als rootgebruiker.

Conclusie

Dit artikel liet je zien hoe je de MySQL-server installeert en een MySQL-rootwachtwoord instelt op CentOS 8 en Ubuntu 20.04 LTS Linux-distributies met Ansible. Dit artikel gebruikte de mysql_user Ansible-module voor het instellen van het MySQL-rootwachtwoord. U kunt deze module gebruiken om het MySQL-rootwachtwoord te wijzigen, nieuwe MySQL-gebruikers aan te maken en nog veel meer gebruikersbeheerfuncties uit te voeren.

Voor meer informatie over de mysql_user module, controleer dan de officiële documentatie van de mysql_user module.

Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...