Habilitar menú “Diseño” en phpMyAdmin (MAMP)

Una de las mejores herramientas que ha implementado phpMyAdmin es la posibilidad de tener un GUI para el desarrollo de nuestra BD. Esta herramienta no viene activada por defecto en nuestra instalación.
Hoy les voy a enseñar en pocos pasos como realizar la terea de activar el menú “Diseño”, y todas sus funcionalidades en phpMyAdmin con MAMP como entorno.

Primero vamos a reemplazar la versión de phpMyAdmin que viene con la instalación de MAMP, la cual es algo antigua. Accedemos a phpMyAdmin, y descargamos la última versión (Este tutorial esta indicado para la versión 3.5.6 de phpMyAdmin).
Descomprimimos el fichero y compiamos la carpeta con todo el contenido de la nueva versión.

Ahora vamos a /Library/Application Support/appsolute/MAMP PRO. Aquí se encuentra el directorio “phpMyAdmin”. Renombramos esta carpeta por “_phpMyAdmin” y pegamos la carpeta anteriormente copiada dentro de /Library/Application Support/appsolute/MAMP PRO. En caso de que el nombre de la carpeta no sea “phpMyAdmin”, lo cambiamos por este.
Dentro de la nueva carpeta “phpMyAdmin” encontramos un fichero con el nombre “config.sample.inc.php”, hacemos una copia de este fichero (“config.sample.inc copy.php”) y la renombramos como “config.inc.php”. Este fichero será el fichero de configuración de phpMyAdmin.
Abrimos este fichero y realizamos los siguiente cambios:

Agregamos el user y password y cambiamos el método de autenticación que viene por defecto para hacerlo compatible con MAMP y que no nos pida las credenciales cada vez que se abra.

// $cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'root';

Luego descomentamos estas dos líneas:

$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

y cambiamos el password ‘pmapass’ por cualquiera de uso personal.

También descomentamos las líneas que identificarán las tablas que utilizará phpMyAdmin para gestionar el diseño de tablas.

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb']           = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable']   = 'pma_bookmark';
$cfg['Servers'][$i]['relation']        = 'pma_relation';
$cfg['Servers'][$i]['table_info']      = 'pma_table_info';
$cfg['Servers'][$i]['table_coords']    = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages']       = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info']     = 'pma_column_info';
$cfg['Servers'][$i]['history']         = 'pma_history';
$cfg['Servers'][$i]['table_uiprefs']   = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking']        = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig']      = 'pma_userconfig';
$cfg['Servers'][$i]['recent']          = 'pma_recent';

Recomiendo dejar los valores por defecto, solo descomentarlos.

Una vez hecho esto ya podemos guardar y cerrar el fichero.

Arrancamos los servicios de MAMP (MySQL, PHP y Apache).

Ahora tenemos que agregar la BD ‘phpmyadmin’ declarada en el fichero “config.inc.php” y sus respectivas tablas. Para ello vamos a abrir phpMyAdmin, y nos dirigiremos a localhost, o sea, el root de nuestras BD’s. Y aquí hacemos click en el menú “Importar”. Dentro de este menú, nos pide que escojamos un fichero para importar su contenido. Al buscar iremos a /Library/Application Support/appsolute/MAMP PRO/phpMyAdmin/examples y seleccionaremos el fichero “create_tables.sql“, le damos a “Go” (Versión en inglés de “Ir”). Estas tablas que acabamos de agregar estan pensadas para versiones anteriores a MySQL 4.1.2, por lo que si nuestra versión es superior tendremos que actualizar las tablas. Para ello tenemos un fichero con la actualización dentro del mismo directorio /Library/Application Support/appsolute/MAMP PRO/phpMyAdmin/examples con el nombre “upgrade_tables_mysql_4_1_2+.sql“. Repetimos el proceso de importar, pero esta vez lo hacemos con este fichero.

Ya tenemos la BD y sus tablas agregadas y actualizadas.

phpmyadmin table

Todavía no acabamos, falta agregar permisos al usuario definido en el fichero config ‘pma’, para el uso de la BD que acabamos de crear. Para ello seleccionamos la BD “phpmyadmin” y seleccionamos el menú Privilegios.

Este proceso es complicado y mal hecho, a veces, corrompe la aplicación y/o hasta la instalación de MySQL. Mucha atención a los pasos.

Dentro del menú “Privilegios”, clickamos en la opción “Add User” (“Agregar usuario”). En este formulario rellenamos el “Username” (“Nombre de usuario”) con el nombre definido en el fichero “config.inc.php”, en nuestro caso ‘pma’. En Host, seleccionamos “localhost”. Y en password, colocamos (2 veces) el que especificamos en el fichero “config.inc.php” en la clave ‘controlpass’.

En la sección “Database for user” (“Usuario para la base de datos”), seleccionamos “None” (“Ninguna”). Damos a “Check All” en el título “Global privileges” y presionamos “Add User” (“Agregar usuario”).

Database for user

Ya tenemos el usurio creado, pero no asignado a ninguna BD’s. Volvemos a editar los privilegios del usuario ‘pma’ dándole al botón “Edit Privileges” (“Edita privilegios”). Aquí volvemos a seleccionar “Check All” en el título “Global privileges” y en el apartado “Database-specific privileges” (“Privilegios especificos para la base de datos”), donde pone “Add privileges on the following database” (“Agregar privilegios en la siguiente base de datos”), seleccionamos la BD ‘phpmyadmin’. Esto nos llevará a una nueva página, con aspecto similar, pero con la opción de poder asignar permisos especificos a cada tabla. Aquí hacemos las mismas selecciones, sin seleccionar ninguna tabla, y guardamos los cambios.

Specific for database

Al volver a la BD ‘phpmyadmin’ en la sección “Privileges”, veremos como el usurio ‘pma’ es especifico de esta BD.

No acaba aquí…

Ahora tenemos que darle permisos de “read-only” (“solo-lectura”), a las tablas “user” y “db” de la BD “mysql”. Para ello vamos a la BD “mysql”, seleccionamos el menú “Privileges”, y veremos el usuario ‘pma’ (Si seleccionaste ‘None’ en la opción “Database for user”). Clickamos en “Edit Privileges” y en la sección “Database-specific privileges”, donde pone “Add privileges on the following database” (“Agregar privilegios en la siguiente base de datos”), seleccionamos la BD ‘mysql’ y le damos a “Go”. En la nueva página que se nos abre, vamos al apartado “Table-specific privileges”, y donde pone “Add privileges on the following table” seleccionamos la tabla ‘user’. Nos aparecerá una nueva página en la que seleccionaremos todo de los apartados “SELECT” y “REFERENCE” y checkeamos las opciones “GRANT”, “INDEX” y “TRIGGER”, terminamos la edición presionando en “Go”.
Relaizamos el mismo proceso para darle privilegios al usuario ‘pma’ sobre la tabla ‘db’ de la BD ‘mysql’.

Terminado TODO este proceso. Por precaución cerramos el navegador, reiniciamos los servicios MAMP, volvemos a abrir el navegador y eliminamos la Cache e historial del mismo.

TERMINADO.

Abrimos phpMyAdmin en el navegador y veremos como no nos pide el nombre de usuario contraseña al abrir y que al seleccionar una BD, nos muestra en el menú de opciones el tab “Designer” (“Diseñador”).

Screen Shot 2013-01-25 at 12.38.50

(Puede que esta opción esté escondida en el menú “More”/”Más”).