GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ändern Sie die Authentifizierungsmethode für den MySQL-Root-Benutzer in Ubuntu

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

Ubuntu
  1. So ändern Sie das Sudo- oder Root-Passwort in Ubuntu

  2. Root-Benutzer in Ubuntu 22.04 werden - Schritt-für-Schritt-Anleitung?

  3. So installieren Sie MySQL unter Ubuntu 18.04 LTS

  4. Standardpfad für Benutzerordner ändern?

  5. unterschiedliche Shell für Root- und Nicht-Root-Benutzer

So ändern Sie das Benutzerkennwort in Ubuntu [Anfänger-Tutorial]

Eine einfache Möglichkeit, MySQL unter Ubuntu Linux zu installieren

So öffnen Sie den Ubuntu-Dateimanager als Root-Benutzer

So ändern Sie das Root-Passwort in Ubuntu

So ändern Sie das Root-Passwort in Ubuntu Linux

Wie melde ich mich als Root in Mysql an?