MYSQL ERROR 2049 (HY000): connessione utilizzata utilizzando il vecchio protocollo di autenticazione (pre-4.1.1) utilizzato (opzione client 'secure_auth' abilitata)


9

quando ho provato a ripristinare tutto il dump del database che è nella versione 5.0 alla versione 5.6, è stato ripristinato e dopo che ho provato a riconnettermi, ricevo il seguente errore

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

Ho provato ad aggiungere le seguenti righe in My.ini e ho riavviato il servizio, ma il problema persiste fino a quando.

skip-grant-tables Il seguente link dice che è un bug in MYSQL.

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

Qualcuno ha qualche correzione per questa soluzione?

Risposte:


6

Questo non è un bug se si dispone di account utente con password che utilizzavano l'antico algoritmo di hashing precedente. Se leggi la segnalazione di bug menzionata nel link che hai pubblicato:

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

[1 maggio 15:24] Todd Farmer

La soluzione alternativa ("soluzione", in realtà) a questo consiste nel modificare la password per l'utente interessato in un hash post-4.1. Questa è davvero una buona pratica raccomandata, a prescindere: il processo di hashing e autorizzazione delle password prima della 4.1 presenta notevoli limiti di sicurezza (discussi nella documentazione all'indirizzo http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html ).

Il ripristino di una versione 5.0 dello mysqlschema su un server 5.6 è comunque una cattiva idea, poiché 5.6 ha colonne aggiuntive in alcune tabelle e in alcune tabelle completamente nuove, che potrebbero mancare o meno ora a seconda di come hai configurato mysqldump quando creato il file di dump. Potresti aver causato altri problemi che potresti non vedere immediatamente.

Inoltre, non ho visto skip-grant-tablesmenzionato nell'articolo ... ma se si applica correttamente tale opzione al server, tutta l'autenticazione viene ignorata e si dovrebbe essere in grado di accedere e ripristinare le password.


8

Sulla riga di comando, utilizzare qualcosa di simile al seguente, se non si ha scelta ...

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

Spero che questo aiuti qualcuno, dato che questo era il mio problema di connessione da un Linux


questo non funziona per me. Ricevo ancora il messaggio di errore.
fanchyna,

6

Se usi MySQL Workbench, devi selezionare questa opzione:

inserisci qui la descrizione dell'immagine


Mentre questo funziona per la connessione al database, il problema di non essere in grado di importare / esportare persisterà. L'ho testato e confermato, poiché attualmente sto cercando un modo per poter importare / esportare dati con il vecchio protocollo di autenticazione.
rkeet,

Grazie! Ha funzionato per me quando provo a connettermi usando Workbench.
Huynh Vinh Phat,

Ho trovato questa opzione nella versione 6.0.7 di Workbench ma non nella versione più recente.
Mian Asbat Ahmad,

1

Questo è davvero inteso come un commento sulla risposta precedente, ma è troppo grande per adattarsi a un commento StackExchange.

Anch'io soffrivo di questo problema. Così ho creato un nuovo utente con un hash di nuovo stile e ora uso quel nuovo utente senza problemi. Ecco cosa ho fatto:

    [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   |     |         |       |

Sono stato felice di vedere che la nostra colonna Password era già abbastanza ampia da contenere hash di nuovo stile. (Se fosse stata larga meno di 41 caratteri, avrei potuto non avere il coraggio di allargarla :-)

    [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_passwordsl'essere ONè chiaramente il problema, quindi l'ho modificato temporaneamente:

    [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)

Quindi ho creato un nuovo utente:

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

... e ho dato un'occhiata al nuovo 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      

Nota come il mio hash è più grande degli altri!

Solo per essere ordinato, sono old_passwordstornato a OFF. Questo è stato probabilmente inutile, dal momento che non riesco a pensare perché qualcuno vorrebbe creare nuovi utenti utilizzando vecchie password, ma chi lo sa.

Comunque: questo mi ha risolto.


Questo risolve la domanda del PO? In caso contrario, forse dovrebbe essere la sua domanda e risposta.
Max Vernon,

@MaxVernon Presumo che spetti all'OP decidere se lo risolve. Ha funzionato per me.
entro l'1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.