Não estou muito claro por que isso se tornou um problema na minha instalação do XAMPP, já que também estou executando o PHP 5.3.x na caixa local do servidor e não estava enfrentando esses problemas lá. No entanto, tem a ver com o meu servidor mySQL em execução no modo de criptografia "senha antiga". Versões mais recentes do PHP não permitirão esses tipos de conexões, então você precisa atualizar seu servidor mySQL para usar a criptografia de senha mais recente. Aqui estão as etapas, supondo que você tenha controle sobre o servidor mySQL. Se você não fizer isso, isso está fora do escopo do meu conhecimento.
-
localize o arquivo de configuração para o servidor mysql chamadomy.cnf
. Encontrei o meu em/etc/my.cnf
. Você pode editá-lo comsudo nano /etc/my.cnf
-
Procure uma linha que digaold_passwords=1
e mude paraold_passwords=0
. Você disse ao servidor que na próxima vez que ele for executado e for solicitado a criptografar uma senha usando o comando PASSWORD(), ele usará a nova criptografia de 41 caracteres em vez da criptografia de estilo 'antigo' de 16 caracteres
-
Agora você precisa reiniciar seu servidor/serviço mysql. YMMV, mas no Fedora isso foi feito facilmente comsudo service mysqld restart
. Verifique as instruções do seu sistema operacional para reiniciar o daemon ou serviço mysql
-
Agora temos que editar nossouser
tabela dentro do mysql. Então abra um shell interativo para mysql (no servidor você pode digitarmysql -uYourRootUsername -pYourRootPassword
)
-
Mude para omysql
base de dados. Este é o banco de dados que contém todas as coisas boas para a operação e autenticação do servidor. Você deve ter acesso root para trabalhar com este banco de dados. Se você receber um 'acesso negado', você é SOL. Desculpe.use mysql;
mudará para esse banco de dados
-
Agora queremos atualizar o usuário que estava lhe causando problemas. Em última análise, você provavelmente desejará atualizar todos os seus usuários, mas, por enquanto, estamos nos concentrando apenas no usuário que apresentou o erro.update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
-
Agora você só precisa dizer ao mysql para usar a nova senha para autenticação quando esse usuário tentar se conectar.flush privileges;
.
Você deve estar pronto para ir!