PHPMyAdmin con autenticación HTTP

Este breve tutorial es para aquellos que deseen que su phpmyadmin les pregunte por un usuario/password de un usuario creado en mysql que no necesariamente tiene que tener una cuenta shell en el sistema.

Primero suponemos que Ud., ya ha instalado phpmyadmin exitosamente.

La autenticación por HTTP y/o cookies son los modos recomendados en un medioambiente multi-usuario donde Ud. desea dar acceso a sus propias databases a los usuarios y no desea que ellos jueguen con la de los otros. Sin embago tenga en cuenta que el MS Internet Explorer tiene un compartamiento muy erratico con las cookies (galletas), al menos en versiones previas a la 6, y PHP 4.1.1 es tambien un poco débil es esta área.

Aún en un medio ambiente de un sólo usuario, Ud. podría preferir usar los modos de autenticación HTTP o cookies, así su nombre de usuario y password no estan en texto claro en el archivo de configuración.

Los modos de autenticación con HTTP y cookies son más seguros: la información de login de MySQL no debe ser especificada en el archivo de configuración del phpMyAdmin (excepto la información concerniente al usuario de control ‘controluser’). Sin embargo, tenga en cuenta que el password viaja en texto plano a menos que Ud. este usando el protocolo HTTPS. En el modo cookie, el password es almacenado, encriptado con un algoritmo blowfish, en un archivo cookie temporal.

Nota: Comenzando con la versión de phpMyAdmin 2.6.1, esta sección es sólo aplicacble si Ud. esta usando MySQL server con una version igual o superior a la 4.1.2, o esta corriendo el MySQL server con el parámetro –skip-show-database


Para los modos ‘HTTP’ y ‘cookie’, phpMyAdmin necesita un usuario de control que sólo tenga privilegios de SELECT en las tablas:

  • mysql.user (todas las columnas excepto ‘Password’), 
  • mysql.db (todas las columnas),
  • mysql.host (todas las columnas) y
  • mysql.tables_priv (todas las columnas exceptio Gantor y Timestamp).

Ud. debe especificar los detalles del usuario de control ‘controluser’ y su password en el archivo config.inc.php en las variables:

  • $cfg[‘Servers’][$i][‘controluser’] y
  • $cfg[‘Servers’][$i][‘controlpass’]

El siguiente ejemplo asume que Ud. desea usar pma como el usuario de control y pmapass como el password para el usuario de contro, pero este es sólo un ejemplo, es importante que use un valor diferente en sus archivos de configuración! Las entradas para estas sentencias desde la venta "phpMyAdmin SQL Query" o desde el cliente de línea de comandos (osea la interfase que se parece a DOS), se muestra a continuación.

GRANT USAGE ON mysql.* TO ‘pma’@’localhost’ IDENTIFIED BY ‘pmapass’;
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO ‘pma’@’localhost’;
GRANT SELECT ON mysql.db TO ‘pma’@’localhost’;
GRANT SELECT ON mysql.host TO ‘pma’@’localhost’;
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
ON mysql.tables_priv TO ‘pma’@’localhost’;


Si Ud. esta usando una versión de MySQL anterior a la 4.0.2, por favor reemplace el primer GRAN SELECT query por este:


GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv
) ON mysql.user TO ‘pma’@’localhost’;

Nota: Ud. debe reemplazar localhost por el valor correcto en caso de que phpMyAdmin este corriendo en un servidor diferente al del server MySQL.

De hecho, los queries anteriores sólo trabajan si su versión de MySQL soporta el comando GRANT. Lo cuál es cierto desde la versión 3.22.11

No olvide asignarle un password al usuario root, por lo general lo podra hacer con este comando:

/usr/local/mysql/bin/mysqladmin -u root password new_password

Luego de eso reinicie su mysql y ya podra hacer uso del medio HTTP autenticado en su instalación de phpMyAdmin, tenga presente que en el modo HTTP, no necesita completar los campos user/password en $cfg[‘Server’] y no olvide especificar HTTP en:

$cfg[‘Servers’][$i][‘auth_type’]     = ‘HTTP;

Espero que este pequeño tutorial haya sido de utilidad.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.