A conta MySQL que você está usando provavelmente tem uma senha antiga de 16 caracteres (hash).
Você pode testar isso com um cliente MySQL (como HeidiSQL, o cliente do console MySQL ou qualquer outro cliente) e uma conta que tenha acesso para o
mysql
.user
tabela. Se o campo Senha contiver 16 caracteres, é uma senha antiga e mysqlnd
não pode usá-lo para se conectar ao servidor MySQL.Você pode definir uma nova senha para esse usuário com
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')
veja dev_mysql_set_password
edit:
Você também deve verificar se o servidor está configurado para usar/criar senhas antigas por padrão .
edit2:
Por favor, execute a consulta
SELECT
Length(`Password`),
Substring(`Password`, 1, 1)
FROM
`mysql`.`user`
WHERE
`user`='username'
no servidor 5.0.22 (aquele que está "falhando"). Substitua
username
pela conta que você está usando em mysql_connect().O que isso retorna?