L'account MySQL che stai utilizzando probabilmente ha una vecchia password lunga 16 caratteri (hash).
Puoi verificarla con un client MySQL (come HeidiSQL, il client della console MySQL o qualsiasi altro client) e un account che ha accesso a mysql
.user
tavolo. Se il campo Password contiene 16 caratteri, è una vecchia password e mysqlnd
non può usarlo per connettersi al server MySQL.
Puoi impostare una nuova password per quell'utente con
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')
vedere dev_mysql_set_password
edit:
Dovresti anche controllare se il server è impostato su usa/crea vecchie password per impostazione predefinita
.
edit2:
Esegui la query
SELECT
Length(`Password`),
Substring(`Password`, 1, 1)
FROM
`mysql`.`user`
WHERE
`user`='username'
sul server 5.0.22 (quello che "non funziona"). Sostituisci username
dall'account che stai utilizzando in mysql_connect().
Che cosa restituisce?