MYSQL ERROR 2049 (HY000): Se utilizó la conexión con el protocolo de autenticación antiguo (anterior a 4.1.1) ref (opción de cliente 'secure_auth' habilitada)

9

cuando intenté restaurar todo el volcado de la base de datos que está en la versión 5.0 a la versión 5.6, se restauró y luego, cuando intenté volver a conectarme, recibo el siguiente error

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

Intenté agregar las siguientes líneas en My.ini y reinicié el servicio, pero el problema persiste hasta.

skip-grant-tables El siguiente enlace dice que es un error en MYSQL.

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

¿Alguien tiene alguna solución para esta solución?

Praveen Prasannan
fuente

Respuestas:

6

Esto no es un error si tiene cuentas de usuario con contraseñas que utilizan el antiguo algoritmo de hashing antiguo. Si lees el informe de error mencionado en el enlace que publicaste:

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

[1 de mayo 15:24] Todd Farmer

La solución ("solución", en realidad) a esto es cambiar la contraseña del usuario afectado a un hash posterior a 4.1. Sin embargo, esta es una práctica recomendada, ya que el proceso de autorización y hashing de contraseñas anterior a 4.1 tiene limitaciones de seguridad notables (discutido en la documentación en http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html )

Restaurar una versión 5.0 del mysqlesquema en un servidor 5.6 es una mala idea en cualquier caso, porque 5.6 tiene columnas adicionales en algunas tablas y algunas tablas completamente nuevas, que pueden faltar o no ahora dependiendo de cómo configuró mysqldump cuando creó el archivo de volcado. Es posible que haya causado otros problemas que quizás no vea de inmediato.

Además, no vi skip-grant-tablesmencionado en el artículo ... pero si aplica correctamente esa opción al servidor, se omite toda autenticación y debería poder iniciar sesión y restablecer las contraseñas.

Michael - sqlbot
fuente
8

En la línea de comando, use algo como lo siguiente, si no tiene otra opción ...

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

Espero que esto ayude a alguien, ya que este fue mi problema al conectarme desde un Linux

ShaunOReilly
fuente
Esto no funciona para mi. Todavía recibo el mensaje de error.
fanchyna
6

Si usa MySQL Workbench, debe marcar esta opción:

ingrese la descripción de la imagen aquí

Franck Dernoncourt
fuente
Si bien esto funciona para conectarse a la base de datos, el problema de no poder importar / exportar persistirá. He probado y confirmado esto, ya que actualmente estoy buscando una manera de permitir importar / exportar datos con el antiguo protocolo de autenticación.
rkeet
¡Gracias! Funcionó para mí cuando trato de conectarme usando Workbench.
Huynh Vinh Phat
Encontré que esta opción está en la versión 6.0.7 de workbench pero no en la última versión.
Mian Asbat Ahmad
1

Esto realmente se entiende como un comentario sobre la respuesta anterior, pero es demasiado grande para caber en un comentario de StackExchange.

Yo también sufría de este problema. Así que creé un nuevo usuario con un hash de nuevo estilo, y ahora uso a ese nuevo usuario sin problemas. Esto es lo que hice:

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

Me alegró ver que nuestra columna Contraseña ya era lo suficientemente amplia como para contener hashes de estilo nuevo. (Si hubiera tenido menos de 41 caracteres de ancho, podría no haber tenido el coraje de ampliarlo :-)

    [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_passwordsser ONes claramente el problema, así que lo cambié temporalmente:

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

Luego creé un nuevo usuario:

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

... y echó un vistazo al nuevo 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      

¡Observe cómo mi hash es más grande que los demás!

Solo para ser ordenado, me puse de old_passwordsnuevo OFF. Esto probablemente no tenía sentido, ya que no puedo pensar por qué alguien querría crear nuevos usuarios utilizando contraseñas antiguas, pero quién sabe.

De todos modos: esto lo resolvió para mí.

offby1
fuente
¿Esto resuelve la pregunta del OP? Si no, quizás debería ser su propia pregunta y respuesta.
Max Vernon
@MaxVernon Supongo que depende del OP decidir si lo resuelve. Funcionó para mi.
offby1