Atualizando o PHP, problema com senhas antigas do MySQL

1

Eu herdei um servidor Windows 2k3 executando uma instalação do XAMPP a partir da idade da pedra. Eu precisava atualizar o PHP para facilitar uma atualização para o MediaWiki para facilitar uma nova extensão do MediaWiki (para facilitar alguma documentação para facilitar meu trabalho para facilitar o pagamento para facilitar ... você entendeu).

No entanto ... instalar uma nova versão do PHP resultou em bibliotecas MySQL do PHP se recusando a se comunicar usando as senhas de 152 bits do "estilo antigo" do MySQL. Não é um problema na teoria. A instalação do MySQL é pós-4.1, então deve ter a funcionalidade de atualizar as senhas do usuário de 152 bits para 328 bits (o que é um algoritmo de hash estranho ...).

Eu corri o seguinte:

SET PASSWORD = PASSWORD('foo');

no MySQL, mas consultando:

SELECT user, password FROM mysql.user;

retornou a mesma senha com a qual eu comecei - 152 bits. Agora ... eu suspeito que você esteja pensando 'AHA! senhas antigas estão ativadas! '. Infelizmente não é - eu o desabilitei na configuração (explicitamente configurei para 0), tornei duplamente certo que tenho uma referência absoluta a esse arquivo de configuração e assegurei que o serviço não está usando o sinalizador --old-passwords. O serviço foi reiniciado após cada operação.

Então eu fui para outro sistema e gerou o hash de 328 bits, copiando o hash para a primeira instância do MySQL. Infelizmente, isso também não funcionou (eu me lembrei de FLUSH PRIVILEGES).

O erro do aplicativo é:

"'mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool [...snip...]

Existe mais alguma coisa que eu possa tentar fazer com que o PHP reconheça o MySQL como não usando a 'antiga autenticação insegura'? O MySQL parece estar preso no modo 'senhas antigas' e eu não consigo tirá-lo disso.

    
por Rushyo 14.01.2011 / 16:45

1 resposta

1

Corrigido. Para os Deuses, só sei que razão a coluna 'password' da tabela mysql.user era um char (16). Configure-o para char (41), jogue o hash gerado a partir do outro DB e ele ficou feliz.

    
por 14.01.2011 / 17:08