Activar la opción de trabajar con tablas vinculadas en PhpMyAdmin

PhpMyAdmin incluye opciones para relacionar tablas (de tipo InnoDB), pero muchas veces vienen desactivadas y al darle al boton operaciones en la base de datos, aparece el error: Las opciones adicionales para trabajar con tablas vinculadas fueron desactivadas. Para saber porqué, dé clic aquí.

Para activarlas debemos añadir algunas opciones a los ficheros de configuración del PMA.

En algunos paquetes que integran Apache, MySQL y PHP no es necesario configurar nada porque ya traen activadas por defecto estas opciones, comoXAMPP. En otros paquetes, aunque configures estas opciones, es posible que sigan sin funcionar las relaciones, como en el WAMP.

Para lograr que funcionen las relaciones debemos seguir estos pasos:

  1. Comprobar si tenemos una tabla llamada phpmyadmin. Si no es así, ejecutar el script create_tables.sql, que está en la carpeta de scripts de phpmyadmin.
    Esta es una tabla que usa PMA internamente para ofrecer características adicionales, como las relaciones entre tablas.
  2. Acceder al fichero de configuración de PMA config.inc.php (en las versiones nuevas viene como config.default.php) y dejar estas opciones tal y como se indica a continuación:
    $cfg['Servers'][$i]['auth_type'] = 'http';
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'pmapass';
    $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]['designer_coords'] = 'pma_designer_coords';
  3. Crear un usuario MySQL para utilizar la relación entre tablas (que será el que indicamos anteriormente como controluser con la contraseña indicada en controlpass) y asignarle los correspondientes permisos:
    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';
  4. Reiniciar apache y acceder al PMA. Si todo ha salido bien, ya no tendremos el mensaje de error y aparecerá en el menú de arriba el botón diseñador, desde donde podremos establecer las relaciones entre tablas.

Más información:
PhpMyAdmin Wiki

9 opiniones en “Activar la opción de trabajar con tablas vinculadas en PhpMyAdmin”

  1. Pingback: Bitacoras.com
  2. Hola,

    Por favor, quiero su ayuda en este foro, con respecto a activar la opcion de trabajar con tablas vinculadas en phpmyadmin. Trato de seguir los pasos para hacerlo, pero, al llegar en la etapa 3, no se que hacer. Tal vez soy tonto…ejejej…

    Gracias de antemano.

  3. Hola Gracias por el tuto. tengo un problema en el puntto numero 1. no encuentro la carpeta script de phpmyadmin, O a lo mejor no estoy en la ruta correcta /etc/phpmyadmin/ , si se encuentra en otra direccion favor de indicarme gracias.

    Versión del servidor: 5.1.41-3ubuntu12.10
    Apache/2.2.14 (Ubuntu)
    Versión del cliente: 5.1.41

    1. amigo busca la ruta del phpmyadmin en el archivo de configuracion de apache para ver cual es la ruta desde donde carga phpmyadmin.

      busca httpd.conf y de ahí vas sacando la ruta de phpmyadmin

  4. bueno el create_tables.sql lo encontre en esta ruta /etc/phpmyadmin y lo ejecute, el archivo config.inc.php quedo de la sig. manera :

    /* Authentication type */
    $cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’; —————-> EN ESTA LINEA AL FINAL NO TIENE ‘http’ SINO ‘cookie’
    /* Server parameters */
    //$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
    //$cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;
    //$cfg[‘Servers’][$i][‘compress’] = false;
    /* Select mysqli if your server has it */
    //$cfg[‘Servers’][$i][‘extension’] = ‘mysql’;
    /* Optional: User for advanced features */
    $cfg[‘Servers’][$i][‘controluser’] = ‘pma’;
    $cfg[‘Servers’][$i][‘controlpass’] = ‘pmapass’;
    /* Optional: Advanced phpMyAdmin features */
    $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][‘designer_coords’] = ‘pma_designer_coords’;
    /* Uncomment the following to enable logging in to passwordless accounts,
    * after taking note of the associated security risks. */
    // $cfg[‘Servers’][$i][‘AllowNoPassword’] = TRUE;

    y en el paso 3 ejecute todos los comandos desde la sell del SQL , pero me sigue apareciendo el mismo error.
    alguna idea?
    gracias.

  5. Pingback: Anónimo

Deja un comentario

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