Cómo instalar phpMyAdmin en CentOS 7

Esta pequeña guía está dedicada a mostrar cómo instalar phpMyAdmin en CentOS 7 paso a paso. Con esta potente herramienta instalada en tu sistema podrás administrar remotamente tus bases de datos MariaDB o MySQL alojadas en tu servidor o VPS CentOS.

Antes de instalar phpMyAdmin en CentOS 7

Para completar esta guía de instalación y configuración de phpMyAdmin en CentOS 7 necesitamos satisfacer unos requerimientos mínimos:

  • Un sistema CentOS 7 actualizado.
  • Una pila LAMP o similar, es decir, servidor web con PHP y el servicio de bases de datos.
  • Acceso por línea de comandos como root o usuario con permisos de sudo.
  • Conexión a Internet.

Si aún no dispones del entorno necesario, echa primero un vistazo a nuestra guía de instalación y configuración LAMP en CentOS 7.

También será necesario disponer de ciertas herramientas del sistema procedentes de los repositorios de CentOS 7, por lo que los actualizamos:

~$ sudo yum update

E instalamos las herramientas:

~$ sudo yum install -y policycoreutils-python wget

Cómo descargar phpMyAdmin para CentOS 7

Vamos a descargar phpMyAdmin para CentOS 7 desde el sitio web oficial de la aplicación, ya que los paquetes de phpMyAdmin disponibles en los repositorios de la distribución actualmente no recogen una versión optimizada para las versiones actuales de PHP.

como descargar phpmyadmin para centos 7

Accederemos a la página de descargas, donde encontraremos paquetes de las últimas versiones disponibles con distintos formatos de compresión:

descargar phpmyadmin en centos 7

De los distintos formatos disponibles (zip, tar.gz y tar.xz) en este ejemplo elegiremos el que tiene mayor compresión, para reducir el tiempo de descarga y el ancho de banda consumido. Copiamos el enlace y realizamos la descarga desde consola mediante el comando wget:

~$ wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.xz

Cómo instalar phpMyAdmin en CentOS 7

Para instalar phpMyAdmin en CentOS 7 debemos realizar una serie de pasos que detallamos a continuación.

Archivos de phpMyAdmin

En primer lugar descomprimimos el paquete que acabamos de descargar. Un buen sitio donde ubicar los archivos podría ser en el directorio /var/www/:

~$ sudo tar xf phpMyAdmin-5.2.0-all-languages.tar.xz -C /var/www/

Como el nuevo directorio que se crea contiene números de versión en su nombre, podemos renombrarlo o, mucho mejor, crear un enlace simbólico sin números:

~$ sudo ln -s /var/www/phpMyAdmin-5.2.0-all-languages/ /var/www/phpMyAdmin

Debemos crear un archivo para directorios temporales al que tenga acceso phpMyAdmin:

~$ sudo mkdir /var/www/phpMyAdmin/tmp

Daremos la propiedad del este directorio temporal al usuario con el que corre el servidor web:

~$ sudo chown apache /var/www/phpMyAdmin/tmp

Pero si tenemos SELinux activado, como ocurre por defecto en CentOS 7, no basta con configurar los permisos ordinarios, sino que habrá que crear un contexto de lectura/escritura para el servidor web en este directorio:

~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/phpMyAdmin-5.2.0-all-languages/tmp(/.*)?"

Haremos permanente este cambio de contexto, para evitar que se elimine accidentalmente:

~$ sudo restorecon /var/www/phpMyAdmin-5.2.0-all-languages/tmp/

Preparativos del servidor web

Para que el servidor web pueda acceder a phpMyAdmin en CentOS 7 crearemos una configuración independiente que incluya un alias específico. Creamos este nuevo archivo de configuración:

~$ sudo nano /etc/httpd/conf.d/phpmyadmin.conf

Y añadimos el siguiente contenido:

Alias /phpmyadmin /var/www/phpMyAdmin

Por supuesto, si prefieres un alias distinto puedes cambiar /phpmyadmin por el alias que prefieras. Guardamos los cambios y recargamos la configuración del servidor web:

~$ sudo systemctl reload httpd

Preparativos de PHP

Si tenemos configurado el servicio de bases de datos para usar utf8mb4, que es lo recomendable, debemos instalar la extensión mbstring de PHP, además de otras extenxiones requeridas:

~$ sudo yum install -y php-bz2 php-mbstring php-pecl-zip php-xml

Para aplicar los cambios, recargamos la configuración del servicio web:

~$ sudo systemctl reload httpd

Cómo configurar phpMyAdmin en CentOS 7

Para configurar phpMyAdmin en CentOS 7 tal como hemos realizado la instalación, crearemos el archivo principal de configuración a partir del archivo de muestra disponible:

~$ sudo cp /var/www/phpMyAdmin/config.sample.inc.php /var/www/phpMyAdmin/config.inc.php

Editaremos el nuevo archivo para realizar algún ajuste:

~$ sudo nano /var/www/phpMyAdmin/config.inc.php

Localizaremos la variable $cfg[‘blowfish_secret’]:

...
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
...

Por defecto no tiene asignado ningún valor, así que introduciremos una cadena de 32 caracteres para cifrar la cookie de autenticación:

...
$cfg['blowfish_secret'] = 'abcd1234efab5678cdef9012abcd3456';
...

Por otro lado, phpMyAdmin puede almacenar configuraciones personalizadas usando el propio servicio de bases de datos, pero la configuración que permite esto se encuentra desactivada:

...
/**
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* 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]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

/**
 * End of servers configuration
 */
...

Si queremos activar esa característica debemos crear una base de datos, un usuario y una contraseña específicos para phpMyAdmin y configurarlas en el bloque anterior, desactivando además todas las líneas que empiezan por //:

...
/**
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'XXXXXXXX';

/* 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]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

/**
 * End of servers configuration
 */
...

Hemos dejado los valores por defecto, excepto la contraseña del usuario pma, que por seguridad personalizaremos. Guardamos los cambios y cerramos el archivo.

Accedemos al servicio de bases de datos con el cliente mysql y el usuario administrador que empleemos habitualmente:

~$ mysql -u root -p

Creamos la base de datos:

> create database phpmyadmin;

Creamos el usuario pma, en el caso de MySQL 8 indicando el plugin de autenticación compatible:

> create user pma@localhost identified with mysql_native_password by 'XXXXXXXX';

En el caso de MariaDB o MySQL 5 creamos el usuario pma de forma más sencilla:

> create user pma@localhost identified by 'XXXXXXXX';

Y otorgamos los permisos necesarios al usuario pma sobre la base de datos phpmyadmin:

> grant all privileges on phpmyadmin.* to pma@localhost;

Ya podemos finalizar la sesión:

> exit

Esta nueva base de datos debe ser inicializada antes de usarse, para lo que phpMyAdmin provee un pequeño script SQL que podemos cargar con el cliente mysql:

~$ mysql -u root -p phpmyadmin < /var/www/phpMyAdmin/sql/create_tables.sql

Cómo acceder a phpMyAdmin

Una vez terminados los preparativos, podemos a acceder a phpMyAdmin en CentOS 7 añadiendo la ruta que hemos configurado en el alias, /phpmyadmin en este caso, a la dirección IP o dominio del servidor:

como instalar phpmyadmin en centos 7

Se nos muestra la página de inicio de sesión, donde introduciremos nombre y contraseña del usuario de MariaDB/MySQL con el que queramos acceder. Una vez iniciada la sesión, se muestra la página principal de la interfaz de trabajo de phpMyAdmin en CentOS 7:

instalar phpmyadmin en centos 7

Ya podemos empezar a trabajar con nuestras bases de datos, tablas, usuarios, etc.

Conclusión

Ahora que ya sabes cómo instalar phpMyAdmin en CentOS 7 puedes administrar fácilmente y de forma remota tus bases de datos sin necesidad de usar una terminal de línea de comandos, o tener que instalar clientes como MySQL Workbench o similares.

Si tienes cualquier duda, sugerencia, pregunta, notificación de errores, etc. sobre esta guía, puedes dejarme un comentario.

¡Apoya este sitio!

Si te ha servido de gran ayuda esta guía de instalación y configuración de phpMyAdmin en CentOS 7, quizás sientas una terrible tentación de agradecérnoslo. Cualquier mínima contribución para el mantenimiento de este sitio es muy bien recibida y puedes hacerlo dejando 1 $ de propina desde PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

14 comentarios en «Cómo instalar phpMyAdmin en CentOS 7»

  1. Hola, sois unos máquinas, felicidades. Se me presenta un solo problema, todo el tutorial perfecto, sin errores, pero cuando abro la dirección aparece la página en blanco. ¿Alguna idea? Gracias de antemano.

    Responder
  2. Hola, requiero instalar una versión anterior de phpMyAdmin. ¿Cuál es el procedimiento para desinstalar la versión actual?

    Muchas gracias, excelente información.

    Responder
    • Hola. Si la versión instalada procede de un paquete elimina el paquete con yum. Si fue descargarda desde el sitio oficial de phpMyAdmin, elimina el archivo de configuración del servidor web que maneja el alias y el directorio donde se descomprimió la aplicación.

      Responder
  3. Estimado, me sale el siguiente error

    Deprecation Notice in ./libraries/Util.class.php#1994
    Array and string offset access syntax with curly braces is deprecated

    Backtrace

    ./libraries/common.inc.php#138: include_once()
    ./server_databases.php#12: require_once(./libraries/common.inc.php)

    Deprecation Notice in ./libraries/url_generating.lib.php#239
    Array and string offset access syntax with curly braces is deprecated

    Backtrace

    ./libraries/common.inc.php#148: include_once()
    ./server_databases.php#12: require_once(./libraries/common.inc.php)

    Deprecation Notice in ./libraries/common.inc.php#261
    Function get_magic_quotes_gpc() is deprecated

    Backtrace

    ./server_databases.php#12: require_once(./libraries/common.inc.php)

    Deprecation Notice in ./libraries/DatabaseInterface.class.php#537
    Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`

    Backtrace

    ./libraries/database_interface.inc.php#13: require_once()
    ./libraries/common.inc.php#823: include_once(./libraries/database_interface.inc.php)
    ./server_databases.php#12: require_once(./libraries/common.inc.php)

    Deprecation Notice in ./libraries/sqlparser.lib.php#876
    Array and string offset access syntax with curly braces is deprecated

    Backtrace

    ./libraries/common.inc.php#1047: include_once()
    ./server_databases.php#12: require_once(./libraries/common.inc.php)

    Responder

Deja un comentario