Diese Anleitung erklärt, warum und wie die Authentifizierungsmethode für MySQL-Root-Benutzer in Caching SHA-2 Pluggable Authentication geändert wird oder Native Pluggable Authentication Methode in Ubuntu.
Einführung
Auch wenn Sie ein Passwort für MySQL-Root eingerichtet haben user, können Sie sich immer noch nicht beim Datenbankserver als root
authentifizieren Benutzer mit einem Passwort. Denn der MySQL-Root-Benutzer ist so eingestellt, dass er sich mit auth_socket
authentifiziert Plugin standardmäßig anstelle des Passworts in Ubuntu-Systemen mit MySQL 5.7 und neueren Versionen. Daher können Sie mit dem Root-Benutzer und seinem Passwort nicht auf den MySQL-Server zugreifen.
Auch wenn Sie versuchen, sich mit dem Befehl:
als Root-Benutzer zu authentifizieren$ mysql -u root -p
Sie erhalten die folgende Fehlermeldung:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Der auth_socket
Das Plugin prüft, ob der Socket-Benutzername (der Benutzername des Betriebssystems) mit dem MySQL-Benutzernamen übereinstimmt, der vom Client-Programm für den Server angegeben wird.
Dieses Plugin kümmert sich nicht darum und benötigt kein Passwort. Es prüft nur, ob der Benutzer eine Verbindung über einen UNIX-Socket herstellt, und vergleicht dann den Benutzernamen.
Wenn das Plugin feststellt, dass der Benutzername des Betriebssystems und der MySQL-Benutzername identisch sind, lässt es die Verbindung ohne weitere Authentifizierung zu.
Zum Beispiel, wenn es einen Benutzer namens ostechnix
gibt auf dem Betriebssystem kann er/sie sich beim 'ostechnix'@'localhost'
anmelden -Konto innerhalb von MySQL, wenn die Unix-Socket-Authentifizierung der definierte Authentifizierungsmechanismus ist. Wenn sich der Benutzername des Betriebssystems vom MySQL-Benutzernamen unterscheidet, wird der auth_socket
plugin verweigert einfach die Verbindung.
Der auth_socket
plugin verbessert die Sicherheit, verkompliziert aber auch die Dinge, wenn wir externe Programme wie phpMyAdmin verwenden, um auf den Datenbankserver zuzugreifen.
Auch die durch auth_socket
authentifizierten Benutzer plugin kann sich nur vom lokalen Host über die Unix-Socket-Datei verbinden. Sie sind daran gehindert, sich aus der Ferne zu verbinden. Aus diesem Grund müssen wir die Authentifizierungsmethode für den MySQL-Root-Benutzer in Ubuntu ändern.
1. Authentifizierungsmethode für MySQL-Root-Benutzer in Ubuntu ändern
MySQL bietet viele Authentifizierungsmethoden und die Plugins, die diese Methoden implementieren. In diesem Leitfaden besprechen wir nur zwei Plugins namens caching_sha2_password
und mysql_native_password
das die Methoden namens Caching SHA-2 Pluggable Authentication implementiert und Native Pluggable Authentication bzw.
Zuerst werden wir sehen, wie die Authentifizierungsmethode für den MySQL-Root-Benutzer in caching_sha2_password
geändert wird .
1.1. Ändern Sie das Authentifizierungs-Plugin in caching_sha2_password
Das caching_sha2_password
Plugin führt die Authentifizierung mit SHA-256-Passwort-Hashing durch. In MySQL 8.0 caching_sha2_password
ist das Standard-Authentifizierungs-Plugin und nicht mysql_native_password
. Es bietet eine sicherere Passwortverschlüsselung, schnellere Authentifizierung und bessere Leistung.
Um das Authentifizierungs-Plugin zu ändern, melden Sie sich mit dem Befehl:
beim MySQL-Server an$ sudo mysql
Da MySQL 8 auth_socket
verwendet plugin in Ubuntu, ermöglicht Ihnen der obige Befehl, sich beim MySQL-Server als root
anzumelden Benutzer. Geben Sie Ihren sudo
ein Passwort zur Authentifizierung.
Suchen Sie als Nächstes die aktuelle Authentifizierungsmethode für alle MySQL-Benutzerkonten, indem Sie den folgenden Befehl an der MySQL-Eingabeaufforderung ausführen:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Beispielausgabe:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.01 sec)
Wie Sie sehen können, verwendet der MySQL-Root-Benutzer auth_socket
Plugin zur Authentifizierung. Lassen Sie uns den auth_socket
ändern Plugin zu caching_sha2_password
Plugin mit ALTER USER
Befehl wie unten.
Bitte beachten Sie, dass, wenn Sie VALIDATE PASSWORD
aktiviert haben plugin beim Festlegen des MySQL-Root-Benutzerpassworts müssen Sie ein starkes Passwort basierend auf der aktuellen Passwortrichtlinie eingeben. Ein sicheres Passwort sollte aus mindestens 8 Zeichen bestehen, darunter ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Ersetzen Sie Password123#@!
Geben Sie im obigen Befehl ein starkes und eindeutiges Passwort Ihrer Wahl ein und notieren Sie es, da wir es später benötigen.
Als nächstes aktualisieren Sie die Änderungen mit dem Befehl:
mysql> FLUSH PRIVILEGES;
Überprüfen Sie nun, ob das aktuelle Authentifizierungs-Plugin geändert wurde oder nicht, indem Sie den Befehl verwenden:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Beispielausgabe:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | $A$005$z9Lq/%(r l +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Die Authentifizierungsmethode für den MySQL-Root-Benutzer wurde auf Caching SHA-2 Pluggable Authentication eingestellt. Von nun an kann sich der MySQL-Root-Benutzer mit einem Passwort authentifizieren.
Beenden Sie die mysql-Eingabeaufforderung:
mysql> exit
Um zu überprüfen, ob sich der MySQL-Root-Benutzer mit einem Passwort anmelden kann, geben Sie den folgenden Befehl ein:
$ mysql -u root -p
Geben Sie das Passwort des MySQL-Root-Benutzers ein:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Obwohl caching_sha2_password
Plugin bietet verbesserte sichere Verschlüsselung und bessere Leistung, es hat einige Kompatibilitätsprobleme mit bestehenden MySQL-Installationen und verursacht Probleme mit einigen PHP-Versionen. Einzelheiten finden Sie unter diesem Link .
Wenn Sie auf Kompatibilitätsprobleme gestoßen sind oder wenn der Client oder Connector caching_sha2_password
nicht unterstützt Authentifizierungs-Plugin, kehren Sie zur nativen Authentifizierungsmethode zurück, d. h. mysql_native_password
wie im folgenden Abschnitt beschrieben.
1.2. Ändern Sie das Authentifizierungs-Plugin in mysql_native_password
MySQL enthält ein mysql_native_password
Plugin, das eine native Pluggable-Authentifizierungsmethode implementiert. Es bietet eine Authentifizierung basierend auf der Passwort-Hashing-Methode.
Das mysql_native_password
war die Standard-Authentifizierungsmethode in den älteren MySQL-Versionen.
Um zu mysql_native_password
zu wechseln Plugin, melden Sie sich bei MySQL als root
an Benutzer:
$ mysql -u root -p
Wenn Sie auth_socket
verwenden plugin, sollten Sie den folgenden Befehl eingeben, um sich als root
beim MySQL-Server anzumelden Benutzer:
$ sudo mysql
Zum Festlegen von mysql_native_password
Plugin als Standardauthentifizierung für MySQL-Root-Benutzer, führen Sie den folgenden Befehl an der MySQL-Eingabeaufforderung aus.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';
Aktualisieren Sie die Änderungen mit dem Befehl:
mysql> FLUSH PRIVILEGES;
Überprüfen Sie nun, ob die Authentifizierungsmethode geändert wurde oder nicht, indem Sie den Befehl verwenden:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Beispielausgabe:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68 | mysql_native_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Erledigt! Wir haben die Authentifizierungsmethode für MySQL-Root-Benutzer in Native Pluggable Authentication geändert.
Schlussfolgerung
In diesem Handbuch haben wir uns angesehen, warum wir die Authentifizierungsmethode für den MySQL-Root-Benutzer in Ubuntu-Systemen ändern müssen, auf denen MySQL 5.7 und neuere Versionen ausgeführt werden. Wir haben auch gesehen, wie man auth_socket
ändert Plugin zu caching_sha2_password
oder mysql_native_password
Plugin für MySQL-Root-Benutzer im Ubuntu-Betriebssystem.
Verwandte Lektüre:
- So setzen Sie das Root-Passwort in MySQL 8 unter Ubuntu Linux zurück