MYSQL ERROR 2049 (HY000): Verbindung unter Verwendung der alten (vor 4.1.1) Authentifizierungsprotokollreferenz verwendet (Client-Option 'Secure_auth' aktiviert)

9

Als ich versuchte, den gesamten Datenbankspeicherauszug in Version 5.0 auf Version 5.6 wiederherzustellen, wurde er wiederhergestellt. Wenn ich danach versuchte, die Verbindung wiederherzustellen, wird der folgende Fehler angezeigt

ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)..

Ich habe versucht, die folgenden Zeilen in My.ini hinzuzufügen und den Dienst neu zu starten, aber das Problem besteht bis.

Skip-Grant-Tabellen Der folgende Link besagt, dass es sich um einen Fehler in MYSQL handelt.

https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch

Hat jemand irgendwelche Korrekturen für diese Lösung?

Praveen Prasannan
quelle

Antworten:

6

Dies ist kein Fehler, wenn Sie Benutzerkonten mit Kennwörtern haben, die den alten Hashing-Algorithmus verwendet haben. Wenn Sie den Fehlerbericht lesen, der in dem von Ihnen geposteten Link erwähnt ist:

http://bugs.mysql.com/bug.php?id=69027

[1. Mai 15:24] Todd Farmer

Die Problemumgehung (eigentlich "Lösung") besteht darin, das Kennwort für den betroffenen Benutzer in einen Post-4.1-Hash zu ändern. Dies ist wirklich eine empfohlene bewährte Methode, unabhängig davon - der Passwort-Hashing- und Autorisierungsprozess vor 4.1 weist erhebliche Sicherheitsbeschränkungen auf (siehe Dokumentation unter http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html) ).

Das Wiederherstellen einer 5.0-Version des mysqlSchemas auf einem 5.6-Server ist auf jeden Fall eine schlechte Idee, da 5.6 in einigen Tabellen zusätzliche Spalten und einige völlig neue Tabellen enthält, die je nach Konfiguration von mysqldump möglicherweise fehlen oder nicht hat die Dump-Datei erstellt. Möglicherweise haben Sie andere Probleme verursacht, die Sie möglicherweise nicht sofort sehen.

Ich habe es auch nicht skip-grant-tablesim Artikel erwähnt gesehen ... aber wenn Sie diese Option korrekt auf den Server anwenden, wird die gesamte Authentifizierung umgangen und Sie sollten sich anmelden und Kennwörter zurücksetzen können.

Michael - sqlbot
quelle
8

Verwenden Sie in der Befehlszeile Folgendes, wenn Sie keine andere Wahl haben ...

mysql -uTheUseerNAme -pThePassword DbName -h HostName --skip-secure-auth

Hoffe das hilft jemandem, da dies mein Problem war, eine Verbindung von einem Linux herzustellen

ShaunOReilly
quelle
Das funktioniert bei mir nicht. Ich erhalte immer noch die Fehlermeldung.
Fanchyna
6

Wenn Sie MySQL Workbench verwenden, müssen Sie diese Option aktivieren:

Geben Sie hier die Bildbeschreibung ein

Franck Dernoncourt
quelle
Während dies für die Verbindung mit der Datenbank funktioniert, bleibt das Problem bestehen, dass der Import / Export nicht möglich ist. Ich habe dies getestet und bestätigt, da ich derzeit nach einer Möglichkeit suche, Daten mit dem alten Authentifizierungsprotokoll importieren / exportieren zu können.
Rkeet
Vielen Dank! Es hat bei mir funktioniert, wenn ich versuche, eine Verbindung mit Workbench herzustellen.
Huynh Vinh Phat
Ich habe festgestellt, dass diese Option in der Workbench-Version 6.0.7 enthalten ist, jedoch nicht in der neuesten Version.
Mian Asbat Ahmad
1

Dies ist eigentlich als Kommentar zur vorherigen Antwort gedacht, aber zu groß, um in einen StackExchange-Kommentar zu passen.

Auch ich litt unter diesem Problem. Also habe ich einen neuen Benutzer mit einem neuen Hash erstellt und verwende diesen neuen Benutzer jetzt ohne Probleme. Folgendes habe ich getan:

    [172.16.2.222:mysql Thu Nov  7 16:16:25 2013]> use mysql;
    Database changed
    [172.16.2.222:mysql Thu Nov  7 16:22:23 2013]> describe user;
    describe user;
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Field                 | Type                              | Null | Key | Default | Extra |
    +-----------------------+-----------------------------------+------+-----+---------+-------+
    | Host                  | char(60)                          | NO   | PRI |         |       |
    | User                  | char(16)                          | NO   | PRI |         |       |
    | Password              | char(41)                          | NO   |     |         |       |

Ich war froh zu sehen, dass unsere Passwortspalte bereits breit genug war, um Hashes neuen Stils aufzunehmen. (Wäre es weniger als 41 Zeichen breit gewesen, hätte ich vielleicht nicht den Mut gehabt, es zu erweitern :-)

    [172.16.2.222:mysql Thu Nov  7 16:13:10 2013]> show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | ON    |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

old_passwordsSein ONist eindeutig das Problem, deshalb habe ich es vorübergehend geändert:

    [172.16.2.222:mysql Thu Nov  7 16:13:59 2013]> set session old_passwords = 'OFF';
    Query OK, 0 rows affected (0.05 sec)

    [172.16.2.222:mysql Thu Nov  7 16:14:12 2013]> show variables like '%pass%';
    show variables like '%pass%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | old_passwords   | OFF   |
    | report_password |       |
    +-----------------+-------+
    2 rows in set (0.06 sec)

Dann habe ich einen neuen Benutzer erstellt:

    [172.16.2.222:mysql Thu Nov  7 16:14:16 2013]> create user 'erich' IDENTIFIED BY 'SEKRIT PASSWORD';

... und warf einen Blick auf den neuen Hash:

    [172.16.2.222:mysql Thu Nov  7 16:14:26 2013]> select * from user order by User;
    +-----------+--------------+-------------------------------------------+--------
    | Host      | User         | Password                                  | Select_
    +-----------+--------------+-------------------------------------------+--------
    | localhost | someguy      | 3d9505dd323e53f1                          | Y      
    | %         | someotherguy | 79b3df3b004bb855                          | Y      
    | %         | erich        | *D2589EF6B59146801234567897BB190123456789 | N      
    | %         | anotheroldguy| 60577e0d77b9212b                          | Y      

Beachten Sie, wie mein Hash größer ist als die anderen!

Nur um ordentlich zu sein, ging ich old_passwordszurück zu OFF. Dies war wahrscheinlich sinnlos, da ich mir nicht vorstellen kann, warum jemand neue Benutzer mit alten Passwörtern erstellen möchte, aber wer weiß.

Wie auch immer: das hat es für mich gelöst.

offby1
quelle
Löst dies die Frage des OP? Wenn nicht, sollte es vielleicht eine eigene Frage und Antwort sein.
Max Vernon
@MaxVernon Ich gehe davon aus, dass es an der OP liegt, zu entscheiden, ob sie es löst. Es hat bei mir funktioniert.
offby1