En el siguiente artículo vamos a ver cómo instalar phpMyAdmin en CentOS 8 / CentOS Stream 8 paso a paso, de modo que podrás administrar de forma remota el servicio de bases de datos MariaDB o MySQL de tu servidor o VPS CentOS, sin necesidad de tener activado el acceso remoto ni tener que instalar un cliente específico.
Contenido
Antes de instalar phpMyAdmin en CentOS 8
Si quieres completar esta guía de instalación de phpMyAdmin en CentOS 8 / CentOS Stream 8 deberías asegurarte de pasar los siguientes requerimientos:
- Un sistema CentOS 8 / CentOS Stream 8 actualizado.
- Una pila tipo LAMP o LEMP, es decir, servidor web con PHP y bases de datos MariaDB/MySQL.
- Acceso a consola con un usuario con permisos de sudo o root.
- Conexión a Internet.
Si no tienes aún el entorno necesario, en este sitio tienes una guía de instalación de la pila LAMP en CentOS 8.
También es importante disponer de algunas herramientas que se pueden obtener desde los repositorios de CentOS 8, así que actualizamos las listas de paquetes:
~$ sudo yum update
E instalamos dichas herramientas:
~$ sudo yum install -y policycoreutils-python-utils tar wget
Cómo descargar phpMyAdmin para CentOS 8
En esta ocasión tenemos que descargar phpMyAdmin para CentOS 8 desde la web oficial del proyecto. Y es que aunque en la versión anterior de CentOS podíamos encontrar phpMyAdmin en repositorios auxiliares, en la versión actual no se encuentra. Así que acudiremos a la web:
Aunque en primer plano encontramos un botón de descarga, se trata de un paquete en formato .zip. En mi caso prefiero descargar otros formatos con mayor compresión y más orientados a Linux.
Visitando la zona de descargas encontramos más alternativas:
En esta guía descargaremos la versión .tar.xz desde consola, por lo que copiaremos el enlace y lo pegaremos como argumento del 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 8
Vamos a instalar phpMyAdmin en CentOS 8 de forma manual en su ubicación.
Podemos descomprimir el paquete que acabamos de descargar directamente en su ubicación en la carpeta de archivos web de la página por defecto, ya que todos los archivos vienen contenidos en una carpeta:
~$ xzcat phpMyAdmin-5.2.0-all-languages.tar.xz | sudo tar x -C /var/www/html/
El nombre de la nueva carpeta es bastante largo, así que lo podemos renombrar como phpmyadmin/:
~$ sudo mv /var/www/html/phpMyAdmin-5.2.0-all-languages/ /var/www/html/phpmyadmin
Como phpMyAdmin necesita escribir en su propio directorio de instalación, cambiaremos la propiedad del mismo y de su contenido al usuario con el que corre el servicio web en CentOS 8:
~$ sudo chown -R apache: /var/www/html/phpmyadmin/
SELinux
Si tienes SELinux activado, que es el comportamiento por defecto en CentOS 8, no bastará con cambiar los permisos ordinarios de los archivos de phpMyAdmin, sino que habrá que crear un contexto de lectura/escritura para el servicio web:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/phpmyadmin(/.*)?"
Aplicamos el contexto con el comando restorecon:
~$ sudo restorecon -R /var/www/html/phpmyadmin/
Preparativos de PHP
La aplicación phpMyAdmin en CentOS 8 requiere la presencia de ciertas extensiones de PHP, como son mbstring, xml y zip. Por tanto debemos asegurarnos de que estén correctamente instaladas:
~$ sudo yum install -y php-mbstring php-pecl-zip php-xml
Acceder a phpMyAdmin en CentOS 8
Para acceder a phpMyAdmin en CentOS 8 desde un navegador construiremos la URL de forma coherente a la instalación que hayamos realizado. En este ejemplo añadimos la ruta /phpmyadmin a la dirección IP o dominio del servidor CentOS 8.
Por ejemplo, hemos preparado este tutorial sobre una máquina CentOS 8 accesible en el subdominio centos8.local.lan, así que empleamos http://centos8.local.lan/phpmyadmin como URL:
¡Pero aún no hemos terminado! Queda un paso importante para terminar.
Cómo configurar phpMyAdmin en CentOS 8
Aunque ya podemos teóricamente usar phpMyAdmin, debemos dar un paso más. Y es que phpMyAdmin incorpora un configurador para generar un archivo config.inc.php con los ajustes de phpMyAdmin. Mientras no se haya guardado ese archivo en la carpeta de phpMyAdmin, el configurador será accesible, lo cual supone un riesgo, ya que el acceso al configurador no está protegido por defecto.
Para acceder al configurador de phpMyAdmin, añadimos la ruta /setup/ a la URL de acceso a phpMyAdmin. En este ejemplo usamos la URL http://centos8.local.lan/phpmyadmin/setup/ en el navegador:
Hay dos formas de configurar phpMyAdmin, mediante este configurador web o editando a mano el archivo de configuración.
Configuración mediante el configurador web
Lo cierto es que usar el configurador puede llegar a desbordarnos, debido a la enorme cantidad de opciones que incluye.
Cuando demos por terminada la configuración, en la página principal del mismo, la sección «Vista general«, un botón «Descargar» nos da la posibilidad de descargar el fichero config.inc.php con la configuración que hayamos generado. Este archivo debe ser copiado a la carpeta de instalación de phpMyAdmin (/var/www/html/phpmyadmin/ en este ejemplo).
Configuración manual
Una de las características de phpMyAdmin es que puede usar una base de datos propia para guardar preferencias de cada usuario. Crearemos fácilmente esta base de datos con un archivo SQL preparado al efecto en el subdirectorio sql/ de la carpeta de phpMyAdmin:
~$ sudo mysql < /var/www/html/phpmyadmin/sql/create_tables.sql
Si tu usuario root no accede con autenticación por socket del sistema, sino que usa clave, en lugar del comando anterior usuarías este:
~$ mysql -u root -p < /var/www/html/phpmyadmin/sql/create_tables.sql
Ahora crearemos un usuario para que maneje esta base de datos. Accede con el cliente mysql y tu usuario administrador:
~$ mysql -u root -p
Creamos un nuevo usuario pma@localhost, cuyo nombre coincide con el valor por defecto de la configuración de phpMyAdmin. En MariaDB o MySQL 5.x lo haremos así:
> create user pma@localhost identified by 'XXXXXXXX';
En caso de usar MySQL 8, indicamos el plugin de autenticación compatible:
> create user pma@localhost identified with mysql_native_password by 'XXXXXXXX';
Sea cual sea el caso, damos privilegios a este usuario sobre la base de datos phpmyadmin:
> grant select, insert, update, delete on phpmyadmin.* to pma@localhost;
Refrescamos los permisos:
> flush privileges;
Y salimos del cliente mysql:
> exit
Ahora prepararemos el archivo de configuración usando el fichero de ejemplo de config.sample.inc.php presente en el directorio de phpMyAdmin y haciendo una copia del mismo como config.inc.php.
En el ejemplo de esta guía copiaríamos el archivo así:
~$ sudo -u apache cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
Sólo habría que realizar algunos ajustes sobre la copia de este archivo.
Editamos el archivo de configuración:
~$ sudo nano /var/www/html/phpmyadmin/config.inc.php
La aplicación necesita una clave de 32 caracteres para cifrar las cookies de sesión. Este valor debemos indicarlo en la siguiente línea:
... $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ ...
Como se puede ver, no hay ningún valor por defecto, así que introduciremos cualquier cadena aleatoria de 32 caracteres:
... $cfg['blowfish_secret'] = 'asdkljasdfjaskljfaasd089u12p3480'; ...
Ahora configuraremos el uso de la base de datos propia de phpMyAdmin que creamos anteriormente. Para ello buscaremos la sección etiquetada en comentarios como «phpMyAdmin configuration storage settings«:
... /** * 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'; ...
Descomentamos las líneas para los valores controluser y controlpass y especificamos la contraseña que creamos anteriormente:
... $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'XXXXXXXX'; ...
Justo bajo este bloque encontramos más líneas comentadas relativas a la base de datos de phpMyAdmin:
... /* Storage database and tables */ // $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; // $cfg['Servers'][$i]['relation'] = 'pma__relation'; ...
Son unos 20 valores que debemos descomentar, sin modificar:
... /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; ... $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; ...
Ya podemos guardar los cambios y cerrar el archivo.
Fin de la configuración
En el momento en que existe un archivo config.inc.php en la carpeta de instalación de phpMyAdmin dejará de estar activo el configurador web:
Una vez terminada la configuración de phpMyAdmin en CentOS 8 ya podemos acceder desde el navegador especificando en la URL la ruta adecuada e iniciando sesión con nuestro usuario de trabajo:
Tras proporcionar nombre de usuario y contraseña, accederemos a nuestra página principal, donde no encontraremos ningún tipo de mensajes de aviso o error:
Ya podemos trabajar con nuestro usuario sobre el servicio de bases de datos, de acuerdo con sus permisos.
Conclusión
Ahora que sabes cómo instalar y configurar phpMyAdmin en CentOS 8 / CentOS Stream 8 ya puedes administrar tus bases de datos y usuarios de forma muy intuitiva sin tener que activar el acceso remoto del servicio, ni instalar clientes. Basta un dispositivo conectado a la red con navegador.
Cualquier duda, pregunta, sugerencia de mejoras, etc. puedes dejar un comentario.
¡Apoya este sitio!
¿Te ha resultado útil esta guía de instalación y configuración de phpMyAdmin en CentOS 8 / CentOS Stream 8? Pues si quieres agradecérnoslo, cualquier mínima contribución al mantenimiento del sitio y elaboración de nuevas guías y tutoriales es bienvenida.
Puedes ayudarnos dejando a partir de 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!
Actualizado a la versión 5.2.0.
Portal recomendado, funcional tal como es descrito. Muchas gracias.
¡Gracias, Jesús! ¡Me alegro de que te sirviera!
En el caso que ya tenga una base de datos, con un usuario y contraseña establecida, ¿cómo podría enlazarla con phpMyAdmin?
¡Hola, Irving! No acabo de entender tu pregunta. Si instalas phpMyAdmin en CentOS 8 puedes acceder sin problemas con cualquier usuario existente de tu servicio de bases de datos. Si te refieres a la base de datos interna que usa phpMyAdmin para guardar configuraciones es interesante usar una base de datos aparte, aunque nada impide que uses un usuario y una base de datos ya existente (aunque en la base de datos tendrás tus propias tablas y las tablas que usa phpMyAdmin).
Intenta acceder con el usuario root de tu servicio de base de datos y te listará todas las bases de datos que tengas en el server.