GNU/Linux, Open Source, Cloud Computing, DevOps y más...

ERROR: PleskFatalException – Unable to connect to database: saved admin password is incorrect.

2 comentarios

plesk_8_3Tras contratar un nuevo servidor VPS a mi proveedor de alojamiento, he comprobado que mi acceso al panel de control Plesk funcionaba correctamente, pero no podía acceder a MySQL con el usuario admin y la misma contraseña de Plesk, por lo que no podía hacer nada con la base de datos desde la línea de comandos. Así, me he decidido a cambiar manualmente la contraseña del usuario admin a través del intérprete de comandos mysql. Tras hacer el cambio podía acceder perfectamente a MySQL, pero sin embargo el panel de control de Plesk ha dejado de funcionar, lanzando la siguiente excepción:

ERROR: PleskFatalException
Unable to connect to database: saved admin password is incorrect.

0: common_func.php3:150
	psaerror(string 'Unable to connect to database: saved admin password is incorrect.')
1: auth.php3:107
ERROR: PleskFatalException
Unable to connect to database: saved admin password is incorrect.

0: common_func.php3:150
	psaerror(string 'Unable to connect to database: saved admin password is incorrect.')
1: auth.php3:107

Buscando información en Internet sobre este problema, he encontrado numerosos sitios donde explicaban distintas soluciones, que resumiendo consistían en lo siguiente:

Solución 1

La contraseña del fichero /etc/psa/.psa.shadow utilizada para acceder a la base de datos del panel Plesk no coincide con la contraseña del usuario admin de la base de datos, por lo que es necesario cambiarla con los siguientes comandos:

~# export PSA_PASSWORD=<new_password>
~# /usr/local/psa/admin/bin/ch_admin_passwd </new_password>

Sin embargo, en mi caso esta solución no ha sido tal, ya que siempre recibo el siguiente mensaje de error, a pesar de que el demonio mysqld de la base de datos está corriendo correctamente:

Unable to connect to database: 1045

Solución 2

Puesto que no me es posible cambiar la contraseña de Plesk, pruebo a adaptar la contraeña de MySQL a la que ya existe en Plesk. Normalmente conoceremos dicha contraseña, pero si no es así, podemos ejecutar lo siguiente, aunque es muy posible que nos encontremos con el mismo error “Unable to connect to database: 1045” del punto anterior:

~# /usr/local/psa/bin/admin --show-password

Para solventarlo, acudiremos al fichero de configuración del motor de base de datos, normalmente /etc/mysql/my.cnf, y añadiremos la siguiente línea en la sección [mysqld]:

skip-grant-tables

Después reiniciaremos la base de datos así:

~# /etc/init.d/mysql restart

De este modo, le hemos dicho a MySQL que no haga comprobaciones de usuarios ni permisos, por lo que el comando “/usr/local/psa/bin/admin –show-password” ahora sí nos dirá cuál es la contraseña que tiene configurada Plesk, y al mismo tiempo podremos acceder a MySQL como usuario admin sin conocer la contraseña, lo que nos permitirá poner la que nosotros queramos.

Llegados a este punto la mayoría de las soluciones a este problema que he visto, incluida la solución oficial de Plesk (http://kb.parallels.com/112492) pasan por cambiar la contraseña del usuario admin así:

~# /usr/bin/mysql -D mysql -e"UPDATE user SET password=PASSWORD('`cat /etc/psa/.psa.shadow`') WHERE User='admin';"

Sin embargo, aunque es cierto que haciendo este cambio el panel de control Plesk vuelve a funcionar correctamente, desapareciendo la excepción “Unable to connect to database: saved admin password is incorrect”, cuando eliminamos de nuevo el parámetro skip-grant-tables de /etc/mysql/my.cnf para dejar las cosas como estaban, de nuevo MySQL no nos permite el acceso con la contraseña que tenemos configurada en Plesk.

Crear otro usuario con todos los privilegios de admin

El problema del intento de solución anterior es que estamos metiendo la contraseña cifrada del fichero /etc/psa/.psa.shadow en MySQL, no la contraseña que nosotros queremos utilizar. En algún lugar del binario /usr/local/psa/admin/bin/ch_admin_passwd o en otra parte de Plesk existe una anomalía que hace que no se asigne al usuario admin la contraseña en claro que nosotros hemos asignado a través del panel de control de Plesk (luego MySQL ya se encarga internamente de almacenarla cifrada), sino la contraseña cifrada de Plesk tal cual aparece en el fichero /etc/psa/.psa.shadow, por lo que siempre nos encontraremos dentro de un círculo vicioso en el que o bien podamos acceder a Plesk y no a la base de datos o viceversa.

Podemos resignarnos y aprendernos o anotar en algún sitio la contraseña cifrada de Plesk y acceder con ella a MySQL, cosas que podremos hacer sin ningún problema, aunque para poder utilizar nuestra contraseña de verdad, la que nosotros podemos recordar, y no esa secuencia insufrible de números y letras, la solución pasa por crear un nuevo usuario en MySQL con todos los privilegios del usuario admin:

mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Ahora ya podremos administrar la base de datos con el usuario root y nuestra contraeña de siempre, y tener el panel de control Plesk funcionando a la perfección con el usuario admin.



 

Sobre el autor

Daniel López Azaña
Arquitecto de soluciones Cloud

Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, DevOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

DanielERROR: PleskFatalException – Unable to connect to database: saved admin password is incorrect.

Artículos relacionados

2 comentarios

Unirte a la conversación
  • Borja - 29/09/2014 responder

    La opción 1 no me deja.

    La opción 2 tiene buan pinta, pero cuando intento crear al usuario desde MySQL me dice que como estoy usando el skip-grant-tables no puedo lanzar esos comandos…

    ¿cómo has hecho para que te deje?

    Daniel - 29/09/2014 responder

    El uso de skip-grant-tables es sólo para obtener la password mediante el comando /usr/local/psa/bin/admin –show-password. Para todo lo demás tienes que deshabilitarlo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *