MYSQL ERRO 2049 (HY000): Conexão usando o antigo (pré-4.1.1) protocolo de autenticação ref usado (opção do cliente 'secure_auth' ativada)

9

quando tentei restaurar todo o despejo de banco de dados que está na versão 5.0 para a versão 5.6, ele foi restaurado e depois disso, quando tentei reconectar, estou recebendo o seguinte erro

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

Tentei adicionar as seguintes linhas no My.ini e reiniciei o serviço, mas o problema persiste até.

skip-grant-tables O link a seguir diz que é um bug no MYSQL.

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

Alguém tem alguma correção para esta solução?

Praveen Prasannan
fonte

Respostas:

6

Isso não é um bug se você tiver contas de usuário com senhas que usavam o antigo algoritmo de hash antigo. Se você leu o relatório de bug mencionado no link que você postou:

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

[1 de maio 15:24] Todd Farmer

A solução alternativa ("solução", na verdade) para isso é alterar a senha do usuário afetado para um hash pós-4.1. Essa é realmente uma prática recomendada, independentemente - o processo de autorização e hash de senha anterior ao 4.1 possui limitações de segurança notáveis ​​(discutidas na documentação em http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html )

Restaurar uma versão 5.0 do mysqlesquema em um servidor 5.6 é uma má idéia, de qualquer forma, porque o 5.6 possui colunas adicionais em algumas tabelas e algumas completamente novas, que podem ou não estar ausentes agora, dependendo de como você configurou o mysqldump quando você criou o arquivo de despejo. Você pode ter causado outros problemas que talvez não sejam vistos imediatamente.

Além disso, eu não vi skip-grant-tablesmencionado no artigo ... mas se você aplicar corretamente essa opção ao servidor, toda a autenticação será ignorada e você poderá fazer login e redefinir senhas.

Michael - sqlbot
fonte
8

Na linha de comando, use algo como o seguinte, se você não tiver escolha ...

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

Espero que isso ajude alguém, pois esse foi o meu problema de conexão a partir de um Linux

ShaunOReilly
fonte
isso não funciona para mim. Ainda recebo a mensagem de erro.
Fanchyna
6

Se você usa o MySQL Workbench, precisa marcar esta opção:

insira a descrição da imagem aqui

Franck Dernoncourt
fonte
Enquanto isso funciona para conectar-se ao banco de dados, o problema de não poder importar / exportar persistirá. Eu testei e confirmei isso, pois atualmente estou procurando uma maneira de importar / exportar dados com o antigo protocolo de autenticação.
Rkeet 21/10
Obrigado! Funcionou para mim quando tento conectar usando o Workbench.
Huynh Vinh Phat
Achei que essa opção está na versão 6.0.7 do ambiente de trabalho, mas não na versão mais recente.
Mian Asbat Ahmad
1

Isso realmente significa um comentário na resposta anterior, mas é grande demais para caber em um comentário do StackExchange.

Eu também estava sofrendo com esse problema. Então, criei um novo usuário com um hash de novo estilo e agora uso esse novo usuário sem problemas. Aqui está o que eu fiz:

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

Fiquei feliz ao ver que nossa coluna Senha já era grande o suficiente para armazenar hashes de novo estilo. (Se tivesse menos de 41 caracteres, talvez eu não tivesse tido a coragem de ampliá-lo :-)

    [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 ONé claramente o problema, então eu mudei temporariamente:

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

Então eu criei um novo usuário:

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

... e deu uma olhada no novo 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 como meu hash é maior que os outros!

Só para ficar arrumado, old_passwordsvoltei a OFF. Provavelmente isso foi inútil, já que não consigo pensar por que alguém iria querer criar novos usuários usando senhas antigas, mas quem sabe.

Enfim: isso resolveu para mim.

offby1
fonte
Isso resolve a pergunta do OP? Caso contrário, talvez deva ser sua própria pergunta e resposta.
Max Vernon
@ MaxVernon Suponho que cabe ao OP decidir se o solucionará. Funcionou para mim.
offby1