No tengo muy claro por qué esto se convirtió en un problema en mi instalación de XAMPP, ya que también estoy ejecutando PHP 5.3.x en el cuadro local del servidor y no estaba experimentando esos problemas allí. Sin embargo, tiene que ver con mi servidor mySQL ejecutándose en el modo de encriptación de "contraseña antigua". Las versiones más nuevas de PHP no permitirán ese tipo de conexiones, por lo que debe actualizar su servidor mySQL para usar el cifrado de contraseña más nuevo. Estos son los pasos, suponiendo que tenga control sobre el servidor mySQL. Si no lo hace, eso queda fuera del alcance de mi conocimiento.
-
busque el archivo de configuración para el servidor mysql llamado
my.cnf
. Encontré el mío en/etc/my.cnf
. Puedes editarlo consudo nano /etc/my.cnf
-
Busque una línea que diga
old_passwords=1
y cámbielo aold_passwords=0
. Ahora le ha dicho al servidor que la próxima vez que se ejecute, y se le solicite cifrar una contraseña usando el comando PASSWORD(), use el nuevo cifrado de 41 caracteres en lugar del cifrado de estilo "antiguo" de 16 caracteres -
Ahora debe reiniciar su servidor / servicio mysql. YMMV, pero en Fedora eso se hizo fácilmente con
sudo service mysqld restart
. Consulte las instrucciones de su sistema operativo para reiniciar el demonio o servicio mysql -
Ahora tenemos que editar nuestro
user
tabla dentro de mysql. Así que abra un shell interactivo en mysql (en el servidor puede escribirmysql -uYourRootUsername -pYourRootPassword
) -
Cambiar a
mysql
base de datos. Esta es la base de datos que contiene todo lo bueno para la operación y autenticación del servidor. Debe tener acceso raíz para trabajar con esta base de datos. Si obtiene un 'acceso denegado', está SOL. Lo siento.use mysql;
cambiará a esa base de datos -
Ahora queremos actualizar el usuario que te estaba dando problemas. En última instancia, probablemente querrá actualizar a todos sus usuarios, pero por ahora, solo nos estamos enfocando en el usuario que generó el error.
update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
-
Ahora solo necesita decirle a mysql que use la nueva contraseña para la autenticación cuando ese usuario intente conectarse.
flush privileges;
.
¡Deberías estar listo para irte!