So setzen Sie das MySQL -Root -Passwort mithilfe von Ansible

So setzen Sie das MySQL -Root -Passwort mithilfe von Ansible
Die meisten Linux -Verteilungen, einschließlich CentOS/Rhel und Ubuntu/Debian, setzen Sie das MySQL -Root -Passwort nicht automatisch fest. Da das MySQL -Stammkennwort nicht automatisch festgelegt wird, kann man sich bei der MySQL -Konsole als Stamm. Dies ist nicht sehr gut für die Sicherheit.

Auf CentOS/Rhel können Sie das problemlos ausführen mysql_secure_installation Befehl zum Einrichten eines Stammkennworts. Aber auf Ubuntu 20.04 LTS funktioniert diese Methode nicht, da MySQL ein anderes Authentifizierungs -Plugin für die verwendet Wurzel Benutzer.

In diesem Artikel wird angezeigt, wie Sie ein MySQL -Root -Passwort auf CentOS 8 und Ubuntu 20 einrichten.04 LTS -Linux -Verteilungen mithilfe von 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 müssen mindestens einen CentOS/RHEL 8 -Host oder einen Ubuntu 20 haben.04 LTS -Host für Ansible Automation konfiguriert.

Es gibt viele Artikel unter LinuxHint, die der Installation von Ansible und Konfigurieren von Hosts für Ansible Automation gewidmet sind. Sie können diese bei Bedarf überprüfen.

Einrichten eines Projektverzeichnisses

Bevor wir weiter weitergehen, werden wir ein neues Ansible -Projektverzeichnis einrichten, um die Dinge etwas organisiert zu halten.

Um das Projektverzeichnis zu erstellen 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

Sobald das Projektverzeichnis erstellt wurde, navigieren Sie wie folgt zum Projektverzeichnis:

$ cd MySQL-Root-Pass/

Ein ... kreieren Gastgeber Inventardatei wie folgt:

$ nano Gastgeber

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

Sobald Sie fertig sind, speichern Sie die Datei durch Drücken + X, gefolgt von Y Und .

Hier habe ich zwei Gruppen erstellt, CentOS8, Und Ubuntu20. Der CentOS8 Gruppe hat den DNS -Namen meines Centos 8 -Hosts, VM3.Nodekite.com; und das Ubuntu20 Gruppe hat den DNS -Namen meines Ubuntu 20.04 LTS Host, VM7.Nodekite.com.

Erstellen Sie eine ansible Konfigurationsdatei Ansible.CFG In Ihrem Projektverzeichnis wie folgt:

$ nano ansible.CFG

Geben Sie die folgenden Zeilen in die Ansible.CFG Datei:

[Standardeinstellungen]
Inventory = Hosts
host_key_checking = false

Sobald Sie fertig sind, speichern Sie die Ansible.CFG Datei durch Drücken + X, gefolgt von Y Und .

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

$ ANSIBLE ALL -U ANSIBLE -M PING

Wie Sie sehen können, Host (VM3.Nodekite.com) und Ubuntu 20.04 LTS Host (VM7.Nodekite.com) sind zugänglich.

Installieren von MySQL und Einrichten von Stammkennwort in CentOS/RHEL 8

In diesem Abschnitt wird angezeigt, wie Sie den MySQL -Datenbankserver installieren und ein Stammkennwort für CentOS 8 mit Ansible einrichten. Das gleiche Verfahren sollte auf RHEL 8 funktionieren.

Erstellen Sie das neue Ansible Playbook Install_mysql_centos8.Yaml im Playbooks/ Verzeichnis wie folgt:

$ nano playbooks/install_mysql_centos8.Yaml

Geben Sie die folgenden Zeilen in die Install_mysql_centos8.Yaml Datei:

- Gastgeber: CentOS8
Benutzer: Ansible
wahr werden
Aufgaben:
- Name: Aktualisieren Sie das DNF -Paket -Repository -Cache
DNF:
update_cache: true
- Name: Installieren Sie den MySQL -Server auf CentOS 8
DNF:
Name: Mysql-Server
Zustand: Gegenwart
- Name: Installieren Sie den MySQL -Client auf CentOS 8
DNF:
Name: MySQL
Zustand: Gegenwart
- Name: Stellen Sie sicher, dass der MySQLD -Service ausgeführt wird
Service:
Name: Mysqld
Zustand: Begonnen
aktiviert: wahr

- Name: Installieren Sie die Python3-PYMYSQL-Bibliothek
DNF:
Name: Python3-PyMysql
Zustand: Gegenwart

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten Install_mysql_centos8.Yaml Datei.

Die folgende Zeile zeigt Ansible, das Spielbuch 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 -Clientpaket Mysql mit dem Ansible DNF Modul.

Die vierte Aufgabe stellt sicher, dass die Mysqld Der Service wird ausgeführt und wurde dem Systemstart hinzugefügt, damit er automatisch mit dem Start startet.

Die fünfte Aufgabe installiert die Python 3 MySQL -Bibliothek PYMYSQL. Dies ist für den Zugriff auf MySQL von Ansible erforderlich.

Leiten Sie die Install_mysql_centos8.Yaml Spielbuch wie folgt:

$ Ansible-Playbook Playbooks/install_mysql_centos8.Yaml

Wie Sie sehen können, das Spielbuch Install_mysql_centos8.Yaml lief erfolgreich.

Auf meinem Centos 8 -Gastgeber kann ich als die auf MySQL zugreifen Wurzel Benutzer ohne Passwort, wie Sie im folgenden Screenshot sehen können:

$ sudo mysql -u root

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

Erstellen Sie die neue Gruppenvariablendatei CentOS8 (im gruppe_vars/ Verzeichnis) für die CentOS8 Gruppe, wie folgt:

$ nano Group_vars/Centos8

Fügen Sie eine neue Variable hinzu MySQL_Pass mit dem Stammpasswort (in meinem Fall, Geheimnis) Sie möchten festlegen, wie im Screenshot unten gezeigt.

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die Datei zu speichern.

Erstellen Sie ein neues Spielbuch set_root_pass_centos8.Yaml mit dem folgenden Befehl:

$ nano playbooks/set_root_pass_centos8.Yaml

Geben Sie die folgenden Zeilen in die set_root_pass_centos8.Yaml Datei:

- Gastgeber: CentOS8
Benutzer: Ansible
wahr werden
Aufgaben:
- Name: Setzen Sie das MySQL -Stammkennwort
MySQL_USER:
Login_host: 'Localhost'
Login_user: 'root' '
Passwort: "
Name: 'root' '
Passwort: 'mysql_pass'
Zustand: Gegenwart

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten set_root_pass_centos8.Yaml Datei.

Dieses Spielbuch verwendet das MySQL_USER Ansible Modul zum Festlegen eines MySQL -Root -Passworts.

Der login_host, login_user, Und Passwort Optionen der MySQL_USER Ansible Modul werden verwendet, um den aktuellen MySQL -Login -Hostnamen, den Benutzernamen und das Passwort festzulegen. Standardmäßig ist der MySQL -Login -Hostname (login_host) ist der Lokalhost, der Anmelde -Benutzername (login_user) ist der Wurzel, und das Login Passwort (Passwort) ist leer () auf Centos 8.

Der Passwort Option der MySQL_USER Ansible Modul wird verwendet, um hier ein neues MySQL -Root -Passwort festzulegen. Das MySQL -Root -Passwort ist der Wert der MySQL_Pass Gruppenvariable, die früher festgelegt wurde.

Führen Sie das Spielbuch aus set_root_pass_centos8.Yaml mit dem folgenden Befehl:

$ Ansible-Playbook Playbooks/set_root_pass_centos8.Yaml

Das Spielbuch lief erfolgreich, wie im Screenshot unten zu sehen ist:

Wie Sie sehen können, kann ich mich nicht mehr ohne Stammkennwort beim MySQL -Server anmelden.

Um sich beim MySQL -Server als die anzumelden 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 Stammkennwort ein, das Sie mit Ansible eingestellt haben, und drücken Sie .

Sie sollten auf dem MySQL -Server als der angemeldet sein Wurzel Benutzer.

Installieren von MySQL und Einrichten von Stammkennwort auf Ubuntu 20.04 LTS

In diesem Abschnitt wird angezeigt, wie Sie den MySQL -Datenbankserver installieren und ein Stammkennwort auf Ubuntu 20 einrichten.04 LTs mit Ansible.

Erstellen Sie ein neues Ansible Playbook install_mysql_ubuntu20.Yaml im Playbooks/ Verzeichnis wie folgt:

$ nano playbooks/install_mysql_ubuntu20.Yaml

Geben Sie die folgenden Zeilen in die install_mysql_ubuntu20.Yaml Datei:

- Hosts: Ubuntu20
Benutzer: Ansible
wahr werden
Aufgaben:
- Name: Aktualisieren Sie das APT -Paket -Repository -Cache
geeignet:
update_cache: true
- Name: Installieren Sie den MySQL -Server auf Ubuntu 20.04 LTS
geeignet:
Name: Mysql-Server
Zustand: Gegenwart
- Name: Installieren Sie den MySQL -Client auf Ubuntu 20.04 LTS
geeignet:
Name: MySQL-Client
Zustand: Gegenwart
- Name: Stellen Sie sicher, dass der MySQL -Service ausgeführt wird
Service:
Name: MySQL
Zustand: Begonnen
aktiviert: wahr
- Name: Installieren Sie die Python3-PYMYSQL-Bibliothek
geeignet:
Name: Python3-PyMysql
Zustand: Gegenwart

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten install_mysql_ubuntu20.Yaml Datei.

Die folgende Zeile fordert Ansible auf, das Spielbuch 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 -Clientpaket Mysql mit dem Ansible geeignet Modul.

Die vierte Aufgabe stellt sicher, dass die Mysql Der Service wird ausgeführt und wurde dem Systemstart hinzugefügt, damit er automatisch mit dem Start startet.

Die fünfte Aufgabe installiert die Python 3 MySQL -Bibliothek PYMYSQL. Dies ist erforderlich, um von Ansible von Ansible zugreifen zu können.

Leiten Sie die install_mysql_ubuntu20.Yaml Spielbuch wie folgt:

$ Ansible-Playbook Playbooks/install_mysql_ubuntu20.Yaml

Wie Sie sehen können, das Spielbuch install_mysql_ubuntu20.Yaml lief erfolgreich.

Auf meinem Ubuntu 20.04 LTS -Host, ich kann auf MySQL als die zugreifen 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 Stammkennwort für den MySQL -Server einzurichten.

Erstellen Sie eine neue Gruppenvariablendatei Ubuntu20 (im gruppe_vars/ Verzeichnis) für die Ubuntu20 Gruppe, wie folgt:

$ nano Group_vars/Ubuntu20

Fügen Sie eine neue Variable hinzu, MySQL_Pass, mit dem Stammpasswort (in meinem Fall, sehr secret) Das möchten Sie einstellen, wie im Screenshot unten gezeigt.

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die Datei zu speichern.

Erstellen Sie ein neues Spielbuch set_root_pass_ubuntu20.Yaml mit dem folgenden Befehl:

$ nano playbooks/set_root_pass_ubuntu20.Yaml

Geben Sie die folgenden Zeilen in die 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 'aktualisieren Sie MySQL.Benutzer set plugin = "mysql_native_password"
Wobei user = "root" und host = "localhost" ''
- Name: Flush -Privilegien
Shell: Mysql -u Root -e 'Flush -Privilegien'
- Name: Setzen Sie das MySQL -Stammkennwort
MySQL_USER:
Login_host: 'Localhost'
Login_user: 'root' '
Passwort: "
Name: 'root' '
Passwort: 'mysql_pass'
Zustand: Gegenwart

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten set_root_pass_ubuntu20.Yaml Datei.

Hier habe ich drei Aufgaben definiert.

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

Die zweite Aufgabe lädt alle Privilegien neu.

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 Modul werden verwendet, um den aktuellen MySQL -Login -Hostnamen, den Benutzernamen und das Passwort festzulegen. Standardmäßig ist der MySQL -Login -Hostname (login_host) Ist Lokalhost, der Anmelde -Benutzername (login_user) Ist Wurzel, und das Login Passwort (Passwort) ist leer () auf dem System.

Hier das Passwort Option der MySQL_USER Ansible Modul wird verwendet, um ein neues MySQL -Root -Passwort festzulegen. Das MySQL -Root -Passwort ist der Wert der MySQL_Pass Gruppenvariable, die ich früher festgelegt habe, in der gruppe_vars/ubuntu20 Datei.

Führen Sie das Spielbuch aus set_root_pass_ubuntu20.Yaml mit dem folgenden Befehl:

$ Ansible-Playbook Playbooks/set_root_pass_ubuntu20.Yaml

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

Wie Sie sehen können, kann ich mich nicht mehr ohne Stammkennwort beim MySQL -Server anmelden.

$ sudo mysql -u root

Um sich beim MySQL -Server als Stammbenutzer mit dem SET -Kennwort 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 Stammkennwort ein, das Sie mit Ansible eingestellt haben, und drücken Sie .

Sie sollten als Root -Benutzer auf dem MySQL -Server angemeldet sein.

Abschluss

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 -Verteilungen mit Ansible. Dieser Artikel verwendete die MySQL_USER Ansible Modul zum Einrichten des MySQL -Root -Passworts. Sie können dieses Modul verwenden, um das MySQL -Root -Kennwort zu ändern, neue MySQL -Benutzer zu erstellen und viele weitere Benutzerverwaltungsfunktionen zu erhalten.

Weitere Informationen zur MySQL_USER Modul, überprüfen Sie die offizielle Dokumentation des MySQL_User -Moduls.