Ansible

So legen Sie das MySQL-Root-Passwort mit Ansible fest

So legen Sie das MySQL-Root-Passwort mit Ansible fest
Die meisten Linux-Distributionen, einschließlich CentOS/RHEL und Ubuntu/Debian, setzen das MySQL-Root-Passwort nicht automatisch. Da das MySQL-Root-Passwort nicht automatisch gesetzt wird, kann man sich ohne Passwort als Root an der MySQL-Konsole anmelden. Das ist nicht sehr gut für die Sicherheit.

Unter CentOS/RHEL können Sie die mysql_secure_installation Befehl zum Einrichten eines Root-Passworts. Aber unter Ubuntu 20.04 LTS funktioniert diese Methode nicht, da MySQL ein anderes Authentifizierungs-Plugin für die Wurzel Benutzer.

Dieser Artikel zeigt Ihnen, wie Sie ein MySQL-Root-Passwort unter CentOS 8 und Ubuntu 20 einrichten.04 LTS Linux-Distributionen mit Ansible-Modulen.

Voraussetzungen


Wenn Sie die in diesem Artikel enthaltenen Beispiele ausprobieren möchten,

1) Sie müssen Ansible auf Ihrem Computer installiert haben.

2) Sie benötigen mindestens einen CentOS/RHEL 8-Host oder ein Ubuntu 20.04 LTS-Host konfiguriert für Ansible-Automatisierung.

Es gibt viele Artikel zu LinuxHint, die sich mit der Installation von Ansible und der Konfiguration von Hosts für die Ansible-Automatisierung beschäftigen. Sie können diese bei Bedarf überprüfen.

Einrichten eines Projektverzeichnisses

Bevor wir weitermachen, werden wir ein neues Ansible-Projektverzeichnis einrichten, nur um die Dinge ein wenig organisiert zu halten.

So erstellen Sie das Projektverzeichnis mysql-root-pass/ und alle erforderlichen Unterverzeichnisse (in Ihrem aktuellen Arbeitsverzeichnis) führen Sie den folgenden Befehl aus:

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

Navigieren Sie nach dem Erstellen des Projektverzeichnisses wie folgt zum Projektverzeichnis:

$ cd mysql-root-pass/

Ein ... kreieren Gastgeber Inventardatei wie folgt:

$ Nano-Hosts

Fügen Sie die Host-IP- oder DNS-Namen Ihres CentOS/RHEL 8 oder Ubuntu 20 hinzu.04 LTS-Hosts in der Inventardatei (ein Host pro Zeile), wie im Screenshot unten gezeigt.

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie drücken + X, gefolgt von Ja und .

Hier habe ich zwei Gruppen erstellt, Centos8, und ubuntu20. Das Centos8 Gruppe hat den DNS-Namen meines CentOS 8-Hosts, vm3.Knotendrachen.com; und der ubuntu20 group hat den DNS-Namen meines Ubuntu 20.04 LTS-Host, vm7.Knotendrachen.com.

Erstellen Sie eine Ansible-Konfigurationsdatei ansible.cfg in Ihrem Projektverzeichnis wie folgt:

$ nano ansible.cfg

Geben Sie die folgenden Zeilen in die ein ansible.cfg Datei:

[Standardwerte]
Inventar           = Gastgeber
host_key_checking   = Falsch

Wenn Sie fertig sind, speichern Sie die ansible.cfg Datei durch Drücken von + X, gefolgt von Ja und .

Versuchen Sie, alle Hosts anzupingen, die Sie in Ihrem . hinzugefügt haben Gastgeber Inventardatei wie folgt:

$ ansible all -u ansible -m ping

Wie Sie sehen, ist der my CentOS 8-Host (vm3.Knotendrachen.com) und Ubuntu 20.04 LTS-Host (vm7.Knotendrachen.com) sind erreichbar.

Installieren von MySQL und Einrichten des Root-Passworts unter CentOS/RHEL 8

In diesem Abschnitt erfahren Sie, wie Sie den MySQL-Datenbankserver installieren und ein Root-Passwort unter CentOS 8 mit Ansible einrichten. Das gleiche Verfahren sollte auf RHEL 8 funktionieren.

Erstellen Sie das neue Ansible-Playbook install_mysql_centos8.yaml in dem Spielbücher/ Verzeichnis wie folgt:

$ Nano-Playbooks/install_mysql_centos8.yaml

Geben Sie die folgenden Zeilen in die ein install_mysql_centos8.yaml Datei:

- Gastgeber: centos8
Benutzer: ansible
wahr werden
Aufgaben:
- Name: DNF-Paket-Repository-Cache aktualisieren
dnf:
update_cache: Richtig
- Name: MySQL-Server auf CentOS 8 installieren
dnf:
Name: mysql-server
Zustand: vorhanden
- Name: MySQL-Client auf CentOS 8 installieren
dnf:
Name: mysql
Zustand: vorhanden
- name: Stellen Sie sicher, dass der mysqld-Dienst ausgeführt wird
Bedienung:
Name: mysqld
Zustand: gestartet
aktiviert: Richtig

- Name: Python3-PyMySQL-Bibliothek installieren
dnf:
Name: python3-PyMySQL
Zustand: vorhanden

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die zu retten install_mysql_centos8.yaml Datei.

Die folgende Zeile weist Ansible an, das Playbook auszuführen install_mysql_centos8.yaml auf jedem Host in der Centos8 Gruppe.

Hier habe ich 5 Aufgaben definiert.

Die erste Aufgabe aktualisiert den DNF-Paket-Repository-Cache von CentOS 8 mit dem Ansible dnf Modul.

Die zweite Aufgabe installiert das MySQL-Serverpaket mysql-server mit dem Ansible dnf Modul.

Die dritte Aufgabe installiert das MySQL-Client-Paket mysql mit dem Ansible dnf Modul.

Die vierte Aufgabe stellt sicher, dass die mysqld Dienst ausgeführt wird und zum Systemstart hinzugefügt wurde, sodass er beim Booten automatisch gestartet wird.

Die fünfte Aufgabe installiert die Python 3 MySQL-Bibliothek pymysql. Dies ist erforderlich, um von Ansible aus auf MySQL zuzugreifen.

Führen Sie die install_mysql_centos8.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/install_mysql_centos8.yaml

Wie Sie sehen können, ist das Playbook install_mysql_centos8.yaml lief erfolgreich.

Auf meinem CentOS 8-Host kann ich auf MySQL als Wurzel Benutzer ohne Passwort, wie Sie im Screenshot unten sehen können:

$ sudo mysql -u root

Nachdem der MySQL-Server installiert ist, ist es an der Zeit, ein Root-Passwort für den MySQL-Server einzurichten.

Erstellen Sie die neue Gruppenvariablendatei Centos8 (in dem group_vars/ Verzeichnis) für die Centos8 Gruppe wie folgt:

$ nano group_vars/centos8

Fügen Sie eine neue Variable hinzu mysql_pass mit dem Root-Passwort (in meinem Fall, Geheimnis) die Sie einstellen möchten, wie im Screenshot unten gezeigt.

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die Datei zu speichern.

Erstellen Sie ein neues Playbook set_root_pass_centos8.yaml mit folgendem Befehl:

$ Nano-Playbooks/set_root_pass_centos8.yaml

Geben Sie die folgenden Zeilen in die ein set_root_pass_centos8.yaml Datei:

- Gastgeber: centos8
Benutzer: ansible
wahr werden
Aufgaben:
- Name: MySQL-Root-Passwort festlegen
mysql_user:
login_host: 'localhost'
login_user: 'root'
Passwort: "
Name: 'Wurzel'
Passwort: ' mysql_pass '
Zustand: vorhanden

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die zu retten set_root_pass_centos8.yaml Datei.

Dieses Playbook verwendet die mysql_user Ansible-Modul zum Festlegen eines MySQL-Root-Passworts.

Das login_host, login_user, und Passwort Optionen der mysql_user Ansible-Module werden verwendet, um den aktuellen MySQL-Login-Hostnamen, -Benutzernamen bzw. -Passwort festzulegen. Standardmäßig ist der MySQL-Login-Hostname (login_host) ist der localhost, der Login-Benutzername (login_user) ist der Wurzel, und das Login Passwort (Passwort) ist leer () auf CentOS 8.

Das Passwort Option der mysql_user Ansible-Modul wird verwendet, um ein neues MySQL-Root-Passwort festzulegen, hier. Das MySQL-Root-Passwort ist der Wert des mysql_pass Gruppenvariable, die zuvor gesetzt wurde.

Führen Sie das Playbook aus set_root_pass_centos8.yaml mit folgendem Befehl:

$ ansible-playbook playbooks/set_root_pass_centos8.yaml

Das Playbook wurde erfolgreich ausgeführt, wie im Screenshot unten zu sehen:

Wie Sie sehen, kann ich mich ohne Root-Passwort nicht mehr am MySQL-Server anmelden.

So melden Sie sich beim MySQL-Server als Wurzel Benutzer mit einem Passwort, führen Sie den folgenden Befehl auf Ihrem CentOS 8-Host aus:

$ sudo mysql -u root -p

Geben Sie das Root-Passwort ein, das Sie mit Ansible festgelegt haben, und drücken Sie .

Sie sollten beim MySQL-Server als der Wurzel Benutzer.

Installieren von MySQL und Einrichten des Root-Passworts unter Ubuntu 20.04 LTS

In diesem Abschnitt erfahren Sie, wie Sie den MySQL-Datenbankserver installieren und ein Root-Passwort unter Ubuntu 20 einrichten.04 LTS mit Ansible.

Erstellen Sie ein neues Ansible-Playbook install_mysql_ubuntu20.yaml in dem Spielbücher/ Verzeichnis wie folgt:

$ Nano-Playbooks/install_mysql_ubuntu20.yaml

Geben Sie die folgenden Zeilen in die ein install_mysql_ubuntu20.yaml Datei:

- Hosts: ubuntu20
Benutzer: ansible
wahr werden
Aufgaben:
- Name: Repository-Cache des APT-Pakets aktualisieren
geeignet:
update_cache: Richtig
- Name: MySQL-Server auf Ubuntu 20 installieren.04 LTS
geeignet:
Name: mysql-server
Zustand: vorhanden
- Name: MySQL-Client auf Ubuntu 20 installieren.04 LTS
geeignet:
Name: mysql-client
Zustand: vorhanden
- name: Stellen Sie sicher, dass der MySQL-Dienst ausgeführt wird
Bedienung:
Name: mysql
Zustand: gestartet
aktiviert: Richtig
- Name: Python3-pymysql-Bibliothek installieren
geeignet:
Name: python3-pymysql
Zustand: vorhanden

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die zu retten install_mysql_ubuntu20.yaml Datei.

Die folgende Zeile weist Ansible an, das Playbook auszuführen install_mysql_ubuntu20.yaml auf jedem Host in der ubuntu20 Gruppe:

Hier habe ich 5 Aufgaben definiert.

Die erste Aufgabe aktualisiert den APT-Paket-Repository-Cache von Ubuntu 20.04 LTS mit dem Ansible geeignet Modul.

Die zweite Aufgabe installiert das MySQL-Serverpaket mysql-server mit dem Ansible geeignet Modul.

Die dritte Aufgabe installiert das MySQL-Client-Paket mysql mit dem Ansible geeignet Modul.

Die vierte Aufgabe stellt sicher, dass die mysql Dienst ausgeführt wird und zum Systemstart hinzugefügt wurde, sodass er beim Booten automatisch gestartet wird.

Die fünfte Aufgabe installiert die Python 3 MySQL-Bibliothek pymysql. Dies ist erforderlich, um von Ansible aus auf MySQL zuzugreifen.

Führen Sie die install_mysql_ubuntu20.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/install_mysql_ubuntu20.yaml

Wie Sie sehen können, ist das Playbook install_mysql_ubuntu20.yaml lief erfolgreich.

Auf meinem Ubuntu 20.04 LTS-Host, ich kann auf MySQL zugreifen, als der Wurzel Benutzer ohne Passwort, wie Sie im Screenshot unten sehen können.

$ sudo mysql -u root

Nachdem der MySQL-Server installiert ist, ist es an der Zeit, ein Root-Passwort für den MySQL-Server einzurichten.

Erstellen Sie eine neue Gruppenvariablendatei ubuntu20 (in dem group_vars/ Verzeichnis) für die ubuntu20 Gruppe wie folgt:

$ nano group_vars/ubuntu20

Fügen Sie eine neue Variable hinzu, mysql_pass, mit dem Root-Passwort (in meinem Fall, sehr geheim), die Sie einstellen möchten, wie im Screenshot unten gezeigt.

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die Datei zu speichern.

Erstellen Sie ein neues Playbook set_root_pass_ubuntu20.yaml mit folgendem Befehl:

$ Nano-Playbooks/set_root_pass_ubuntu20.yaml

Geben Sie die folgenden Zeilen in die ein set_root_pass_ubuntu20.yaml Datei:

- Hosts: ubuntu20
Benutzer: ansible
wahr werden
Aufgaben:
- name: Ändern Sie das Authentifizierungs-Plugin des MySQL-Root-Benutzers in mysql_native_password
Shell: mysql -u root -e 'UPDATE mysql.Benutzer SET plugin="mysql_native_password"
WHERE user="root" AND host="localhost"'
- Name: Flush-Privilegien
Shell: mysql -u root -e 'FLUSH PRIVILEGES'
- Name: MySQL-Root-Passwort festlegen
mysql_user:
login_host: 'localhost'
login_user: 'root'
Passwort: "
Name: 'Wurzel'
Passwort: ' mysql_pass '
Zustand: vorhanden

Wenn Sie fertig sind, drücken Sie + X, gefolgt von Ja und , um die zu retten set_root_pass_ubuntu20.yaml Datei.

Hier habe ich drei Aufgaben definiert.

Die erste Aufgabe ändert das Authentifizierungs-Plugin von MySQL Wurzel Benutzer von auth_socket zu mysql_native_password.

Die zweite Aufgabe lädt alle Berechtigungen neu re.

Die dritte Aufgabe verwendet die mysql_user Ansible-Modul zum Festlegen eines MySQL-Root-Passworts.

In der dritten Aufgabe, die login_host, login_user, und Passwort Optionen der mysql_user Ansible-Module werden verwendet, um den aktuellen MySQL-Login-Hostnamen, -Benutzernamen bzw. -Passwort festzulegen. Standardmäßig ist der MySQL-Login-Hostname (login_host) ist localhost, der Login-Benutzername (login_user) ist Wurzel, und das Login Passwort (Passwort) ist leer () auf dem System.

Hier die Passwort Option der mysql_user Ansible-Modul wird verwendet, um ein neues MySQL-Root-Passwort festzulegen. Das MySQL-Root-Passwort ist der Wert des mysql_pass Gruppenvariable, die ich zuvor gesetzt habe, in der group_vars/ubuntu20 Datei.

Führen Sie das Playbook aus set_root_pass_ubuntu20.yaml mit folgendem Befehl:

$ ansible-playbook playbooks/set_root_pass_ubuntu20.yaml

Das Playbook wurde erfolgreich ausgeführt, wie Sie im Screenshot unten sehen können:

Wie Sie sehen, kann ich mich ohne Root-Passwort nicht mehr am MySQL-Server anmelden.

$ sudo mysql -u root

Um sich als Root-Benutzer mit dem festgelegten Passwort beim MySQL-Server anzumelden, führen Sie den folgenden Befehl auf Ihrem Ubuntu 20 aus.04 LTS-Host:

$ sudo mysql -u root -p

Geben Sie das Root-Passwort ein, das Sie mit Ansible festgelegt haben, und drücken Sie .

Sie sollten als Root-Benutzer beim MySQL-Server angemeldet sein.

Fazit

Dieser Artikel hat Ihnen gezeigt, wie Sie den MySQL-Server installieren und ein MySQL-Root-Passwort auf CentOS 8 und Ubuntu 20 festlegen.04 LTS Linux-Distributionen mit Ansible. Dieser Artikel verwendet die mysql_user Ansible-Modul zum Einrichten des MySQL-Root-Passworts. Mit diesem Modul können Sie das MySQL-Root-Passwort ändern, neue MySQL-Benutzer erstellen und viele weitere Benutzerverwaltungsfunktionen ausführen management.

Für weitere Informationen zum mysql_user -Modul, überprüfen Sie die offizielle Dokumentation des mysql_user-Moduls.

Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...