rss
twitter
    Saiba o que estou fazendo, siga-me:)

Como autenticar clientes antigos nos Servidores MySQL 4.1.x ou superior...

Nunca pensei que uma atualização no meu servidor de banco de dados daria tantos problemas.
A versão 4.1.x do MySQL, usa um protocolo de autenticação baseado em um algorítmo de hashing de senha que é incompatível com aquele usado por outros clientes mais antigos.
Uso um aplicativo openSource em casa, DBDesigner, para criar as tabelas e relacionamentos entre as mesmas.
Algum tempo atrás, andei dando uma reconfigurada nas opções de segurança do MySQL, e eu devo ter desabilitado a opção de compatibilidade com senhas velhas com isso.
Aí começou os problemas, o programinha não conectava mais no banco, porque ocorrera um erro de autenticação.
Instalei, desinstalei o software, e nada.
Ontem, fui instalar o sisteminha WikeMedia no pc, e não dava de jeito nenhum. Me chamou a atenção um aviso que falava de incompatibilidade de autenticação do PHP, com o MySQL 4.1.x.
Foi aí que me dei conta do que havia acontecido, conectei na base, fiz uma listagem de usuários, e as senhas estavam com 41 bytes de comprimento.
Eureca, aí estava o problema.
Nos clientes antigos, o hashing de senha gerado pelo banco, era de apenas 16 bytes.

E como fazer entao para diminuir o hashing de senhas?

SET PASSWORD FOR 'user'@'host' = OLD_PASSWORD('senha');

Sem mistério, não é mesmo? Se o erro continuar a persistir, faça uma listagem de usuários, e veja quantos usuários com o mesmo nome existem, com hosts diferentes.

Uma coisa interessante nisso tudo, é que eu nao tive problemas usando JAVA, deve ser porque uso uma das últimas versões do JDBC, e provavelmente o mesmo já vem com um cliente atualizado.

Grande abraço...