Instalar y Configurar phpMyAdmin

phpMyAdmin es una herramienta de software libre escrito en PHP, cuya intención es facilitar la administración de nuestro servidor MySQL a través de la Web.

Actualmente se encuentra en su versión 4.5.1 que es la utilizaremos para la explicación del módulo.

20-Feb-2016

phpMyAdmin es una herramienta de software libre escrito en PHP,  cuya intención es facilitar la administración de nuestro servidor MySQL a través de la Web. Las operaciones más frecuentes del servidor (gestión de bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc) se realizan a través de la interfaz de usuario, pero también nos ofrece la capacidad de ejecutar directamente cualquier sentencia SQL para las operaciones de mantenimiento y consulta de datos.

phpMyAdmin puede administrar un servidor MySQL completo con todas sus bases de datos (se necesita una cuenta de super-usuario o root), así como una base de datos única. Para este último caso se necesita configurar un usuario de MySQL que pueda leer / escribir sólo sobre la base de datos deseada.

phpMyAdmin viene con una amplia gama de documentación, dispone de páginas wiki donde se comparten ideas y tutoriales para la realización de diversas operaciones.

Para facilitar el uso de una amplia gama de personas, phpMyAdmin está siendo traducido a 72 idiomas y es compatible con los idiomas LTR y RTL.

Entre las operaciones que podemos realizar con phpMyAdmin se encuentran:

  • Usar y borrar bases de datos, tablas, vistas, columnas e índices
  • Mostrar múltiples conjuntos de resultados a través de los procedimientos o consultas almacenadas
  • Crear, copiar, borrar, renombrar y modificar bases de datos, tablas, columnas e índices
  • Realizar labores de mantenimiento del servidor, bases de datos y tablas, dando consejos sobre la configuración del servidor
  • Ejecutar, editar y marcar cualquier sentencia SQL, incluyendo consultas en lote
  • Cargar tablas con el contenido de archivos de texto.

A la hora de redactar este módulo se encontraba en su revisión 4.5. Si deseamos encontrar más información, documentación y descargas podemos visitar la web oficial de phpMyAdmin (http://www.phpmyadmin.net/) o la web de documentación en castellano (https://phpmyadmin-spanish.readthedocs.org/es/latest/).

Para instalación y puesta en marcha de phpMyAdmin podemos optar por dos opciones:

Descargar la última versión disponible de la web oficial y luego subirla al servidor por medio de nuestro cliente ftp.

Utilizar el instalador de paquetes del sistema e instalar la versión disponible en el repositorio (no tiene por qué ser justamente la última disponible, aunque a fecha febrero-2016 he comprobado que el repositorio está actualizado con la última versión ¡bien¡).

NOTA: Los usuarios que halláis iniciado el curso durante el año 2017 y os habéis decantado por instalar la versión 11.0 de FreeBSD de octubre de 2016. En el mes de febrero se actualizaron los repositorios y el instalador de paquetes nos instalara la versión 4.6.6 de phpMyAdmin del 23 de enero de 2017, más estable y segura que las anteriores.

Si bien con la opción de instalación por medio del instalador de paquetes nos ahorramos pasos y el proceso se realiza de una forma más automatizada, con la primera opción nos aseguramos de tener instalada siempre la última versión disponible.

Independientemente de la opción seleccionada tras la instalación tendremos que realizar las siguientes tareas:

  • Crear la base de datos phpmyadmin y su administrador (habilitar características avanzadas de phpMyAdmin)
  • Configurar el archivo config.inc.php de phpMyAdmin.

Describiremos los dos procesos de instalación para que cada uno decida cuál es el que más le conviene.

Instalación de phpMyAdmin descargándolo desde la web

Tareas iniciales

Antes de empezar con la instalación de phpMyAdmin, realizaremos una serie de tareas de administración necesarias para que el proceso que vamos a describir en los siguientes apartados funcione correctamente:

  • Instalar el paquete php56-bz2 de php en nuestro sistema utilizando el instalador de paquetes pkg sino lo tenemos instalado (librería de php necesaria para trabajar con archivos comprimidos bz2).
# pkg install php56-bz2

Si optamos por la opción del instalador de paquetes esta librería se instalará de forma automática. Con la versión 11.0 de FreeBSD este paso no será necesario ya que se instala de forma automática con phpMyAdmin.

  • Necesitamos un usuario que pertenezca al grupo ‘www’ para subir al servidor los archivos que vamos a descargar de la web oficial, ya que en el directorio donde vamos a subir los archivos (DocumentRoot de apache) sólo tienen permiso de escritura los miembros de este grupo (y por supuesto el usuario administrador root).

Este usuario puede ser uno nuevo cuyo grupo sea www o añadir a este grupo un usuario existente como nuestro usuario super (lo creamos en el momento de instalar FreeBSD) con el que hemos estado trabajando durante todo el curso.

Crear un nuevo usuario:

  • Utilizando el comando adduser crearemos un usuario que pertenezca al grupo www:
 $ su
Password:
# adduser
Username: usrweb
Full name: usuario con acceso al directorio www
Uid (Leave empty for default):
Login group [usrweb]: www
Login group is www. Invite usrweb into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/usrweb]: 
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username  : usrweb
Password  : *****
Full Name : usuario con acceso al directorio www
Uid    : 1002
Class   :
Groups   : www
Home    : /home/usrweb
Home Mode :
Shell   : /bin/sh
Locked   : no
OK? (yes/no): yes
adduser: INFO: Successfully added (usrweb) to the user database.
Add another user? (yes/no): no
Goodbye!

Añadir el usuario super al grupo www:

  • Para esta tarea utilizaremos el comando pw (revisar tema un poco de FreeBSD) que permite la gestión de usuarios.
# pw groupmod www –M super

Instalar phpMyAdmin

Ir a la página de descargas de la web oficial de phpMyAdmin para obtener la última versión (Enlace descargas phpMyAdmin).

Descargar el archivo para todos los lenguajes en formato zip (en el momento de realizar esta documentación es phpMyAdmin-4.5.4.1-all-languages.zip).

Descomprimir el archivo y renombrar la carpeta que nos crea con el nombre phpMyAdmin.

Antes de iniciar el proceso de subida (upload) del phpMyAdmin descargado, tendremos que modificar los permisos y grupo del directorio www de Apache.

# cd /usr/local/
# chgrp -R www www     → Cambiamos el grupo al que pertenecen todos los archivos ← 
# chmod –R 775 www     → Cambiamos los permisos del directorio www ← 

Subir phpMyAdmin a nuesto servidor

Abrir el programa WinSCP (ver tema Introducción y Software necesario) e iniciar sesión en nuestro servidor indicando la ip que tenga asignada y como usuario usrweb o super.

Autenticación en WinSCP

Cuando se inicie la sesión, se nos mostrará la ventana principal de WinSCP, con dos paneles. El panel de la izquierda representa el árbol de carpetas de nuestro ordenador y el de la derecha el de nuestro servidor.

Desplazarnos dentro del panel izquierdo hasta donde tenemos descomprimido el paquete de phpMyAdmin y en el panel de la derecha desplazarnos hasta el directorio DocumentRoot inicial de nuestro servidor web que estaba establecido en el directorio /usr/local/www.

Pulsaremos con el botón derecho sobre la carpeta de phpMyAdmin y ejecutaremos la orden ‘Upload..’ para subir la carpeta que hemos renombrado de nuestro pc al servidor.

Subir phpMyAdmin descargado de la web con WinSCP

Nos solicitará confirmación para iniciar la subida de archivos. Tras confirmar la subida se iniciará el proceso de transferencia de archivos y al finalizar tendremos en nuestro servidor copiado phpMyAdmin en la carpeta DocumentRoot.

Destino Upload
Proceso Upload phpMyAdmin
phpMyAdmin subido al servidor

Una vez finalizado el proceso, editaremos el fichero de configuración de apache (httpd.conf) para crear un alias a la ruta donde hemos descargado phpMyAdmin. Este proceso lo podemos ver en el siguiente apartado del módulo donde se describe como realizar la instalación por medio del comando pkg.

Instalación de phpMyAdmin por medio del instalador de paquetes

Instalar el paquete phpmyadmin

Para instalar el paquete de phpMyAdmin en nuestro servidor utilizaremos el comando pkg.

# pkg install phpmyadmin
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
Fetching packagesite.txz: 100%    5 MiB   2.8MB/s    00:02
Processing entries: 100%
FreeBSD repository update completed. 24679 packages processed.
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
 phpMyAdmin: 4.5.4
 php56-bz2: 5.6.18
The process will require 32 MiB more space.
6 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching phpMyAdmin-4.5.4.txz: 100%    6 MiB   3.0MB/s    00:02
Fetching php56-bz2-5.6.18.txz: 100%   11 KiB  10.8kB/s    00:01
Checking integrity... done (0 conflicting)
[1/2] Installing php56-bz2-5.6.18...
[1/2] Extracting php56-bz2-5.6.18: 100%
[2/2] Installing phpMyAdmin-4.5.4...
===> Creating users and/or groups.
Using existing group 'www'.
[2/2] Extracting phpMyAdmin-4.5.4: 100%
Message from phpMyAdmin-4.5.4:
phpMyAdmin-4.5.4 has been installed into:

    /usr/local/www/phpMyAdmin

Please edit config.inc.php to suit your needs.

To make phpMyAdmin available through your web site, I suggest
that you add something like the following to httpd.conf:

For Apache versions earlier than 2.4:

    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">
    Options none
    AllowOverride Limit
    
      Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 .example.com
  </Directory>

For Apache version 2.4.x or above:

  Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
  
   <Directory "/usr/local/www/phpMyAdmin/">
    Options None
    AllowOverride Limit
    
      Require local
    Require host .example.com
  </Directory>
  
SECURITY NOTE: phpMyAdmin is an administrative tool that has had several
remote vulnerabilities discovered in the past, some allowing remote
attackers to execute arbitrary code with the web server's user credential.
All known problems have been fixed, but the FreeBSD Security Team strongly
advises that any instance be protected with an additional protection layer,
e.g. a different access control mechanism implemented by the web server
as shown in the example.  Do consider enabling phpMyAdmin only when it
is in use.

NOTA: Acordaos que la versión de FreeBSD 11.0 de Octubre de 2016, instala la última revisión de phpMyAdmin (4.6.6).

Como se puede comprobar con esta opción nos ahorramos las tareas iniciales de instalar la librería bz2,  crear un usuario del grupo www y subir los archivos al servidor.

Si nos fijamos en las últimas líneas de instalación del paquete, se nos indica que tenemos que editar el archivo de configuración httpd.conf de Apache para crear el Alias que nos permita acceder a la aplicación web que hemos instalado. Este paso es obligatorio ya que los archivos de phpMyAdmin no se instalan en la carpeta DocumentRoot de nuestro servidor web.

Establecer permisos para el grupo www

Antes de iniciar este proceso tendremos que dar permisos de lectura/escritura a los miembros del grupo www sobre los archivos de la carpeta donde se ha instalado phpMyAdmin.

→ Acordaos que Si la instalación la hemos realizado subiendo por ftp los archivos la ruta será otra ←
# cd /usr/local/www/phpMyAdmin 
→ Cambiamos el grupo al que pertenecen todos los archivos ←
# chgrp -R www .

Editar fichero de configuración de Apache

Una vez cambiado el grupo de los archivos de phpMyAdmin, editamos el archivo de configuración de Apache y realizamos los cambios.

# cd /usr/local/etc/apache24
# ee httpd.conf

→ Nos desplazaremos hasta el final del archivo e incluiremos las siguientes líneas ←
# Creamos dos alias para que se pueda acceder tanto en minúsculas como en mayúsculas
Alias /phpmyadmin /usr/local/www/phpMyAdmin/
Alias /phpMyAdmin /usr/local/www/phpMyAdmin/
<Directory /usr/local/www/phpMyAdmin/>
 Options None
 AllowOverride none
 Require all granted
</Directory>

→ Guardamos los cambios y reiniciamos el servidor Apache ←

# apachectl restart
Performing sanity check on apache24 configuration:
Syntax OK
Stopping apache24.
Waiting for PIDS: 1176.
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.

Ya estamos preparados para iniciar sesión en phpMyAdmin.

Abrimos nuestro navegador e indicamos la dirección de  nuestro servidor seguido de /phpmyadmin. Si todo funciona se nos mostrará la pantalla de inicio con la que tendremos que indicar un usuario de MySQL y su clave para acceder al mantenimiento de nuestro servidor MySQL.

Para nuestro primer acceso como aún no hemos creado usuarios de MySQL, tendremos que acceder con el usuario root de MySQL que configuramos en el tema de instalación de MySQL.

Primer acceso a phpMyAdmin

Cuando accedamos a la aplicación web, podremos observar las bases de datos existentes en el panel de la izquierda, información acerca del sistema en el que estamos trabajando en el panel de la derecha y en la parte inferior unas leyendas que nos recuerdan que phpMyAdmin todavía no está configurado de forma correcta.

Primer acceso a phpMyAdmin

Estas configuraciones son las que vamos a tratar en el siguiente apartado de este módulo.

Habilitar características avanzadas de phpMyAdmin

El siguiente paso consistirá en habilitar las características avanzadas de phpMyAdmin:

  • Crear una base de datos propia de phpMyAdmin llamada precisamente ‘phpmyadmin’.
  • Crear un usuario en MySQL al que le concederemos todos los permisos sobre esta base de datos.
  • Configurar el archivo config.inc.php de phpMyAdmin.

Crear la base de datos phpmyadmin

Para crear la base de datos ‘phpmyadmin’ y sus tablas, phpMyAdmin nos ofrece un script sql llamado create_tables.sql que se encuentra en el directorio phpMyAdmin/sql.

Para llevar a cabo la ejecución del script sql, iniciaremos una sesión de mysql desde consola.

# cd /usr/local/www/phpMyAdmin/sql
# mysql -u root -p < create_tables.sql
Enter password:
#

Finalizado el script, tendremos una nueva base de datos en nuestro servidor MySQL.

Base de datos phpmyadmin creada

Ahora es el momento de asignarle a la base de datos ‘phpmyadmin’ que acabamos de crear, un usuario al que le otorgaremos todos los permisos necesarios para administrarla. Esta tarea la podemos realizar de dos formas distintas:

  • Con una sesión de consola de mysql.
  • Desde el propio phpMyAdmin

Crear usuario y otorgar permisos desde consola

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.10 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

→ Creamos el usuario con la sentencia CREATE USER ←

mysql> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'password'; → Indicar el password del usuario ←
Query OK, 0 rows affected (0.00 sec)

→ Otorgamos todos los permisos sobre la base de datos con la sentencia GRAN ALL PRIVILEGES ←

mysql> GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'pma'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
#

Crear usuario y otorgar permisos desde phpMyAdmin

Iniciamos sesión en phpMyAdmin como root.

Seleccionamos de la lista de bases de datos del servidor la base de datos ‘phpmyadmin’.

Pulsamos sobre la ficha ‘Privilegios’ para mostrar la lista de todos los usuarios con acceso a ‘phpmyadmin’.

Pulsamos sobre el enlace ‘Agregar cuenta de usuario’ para añadir un nuevo usuario a la lista de usuarios con acceso a la base de datos.

Crear usuario pma para la base de datos phpmyadmin

Escribimos el nombre del usuario ‘pma’, servidor desde el que accede ‘localhost’ y la contraseña. Dejamos marcada la opción ‘Otorgar todos los privilegios para la base de datos "phpmyadmin"’ y pulsamos el botón Continuar.

Crear usuario pma para la base de datos phpmyadmin

Se nos informará de que se ha agregado un nuevo usuario, mostrándonos la instrucción SQL que se ha ejecutado, así como los privilegios que se le han concedido para la base de datos.

Usuario pma creado

Como habréis podido comprobar el proceso es muy sencillo e intuitivo consiguiendo el mismo efecto que si lo hubiéramos realizado desde la sesión de consola de mysql.

Configurar el archivo config.inc.php

Opciones de configuración de phpMyAdmin

phpMyAdmin tiene un archivo donde se almacenan opciones de configuración llamado config.inc.php que se encuentra en el directorio principal de phpMyAdmin.

Inicialmente este archivo nos lo encontraremos vacío, pero disponemos de un archivo llamado config.sample.inc.php que podemos utilizar de plantilla para realizar la configuración.

Lo primero que tenemos que hacer es desplazarnos hasta el directorio donde está instalado phpMyAdmin y realizar una copia de la plantilla config.sample.inc.php con el nombre config.inc.php.

# cd /usr/local/www/phpMyAdmin
# cp config.sample.inc.php config.inc.php

Una vez que tenemos la copia, editaremos el archivo config.inc.php para realizar los siguientes cambios:

  • Establecer frase secreta (blowfish_secret), utilizada como semilla cuando se lleve a cabo la encriptación de contraseñas cuando se utilice la autentificación por medio de cookies
  • Descomentar las líneas que hacen referencia a los ajustes de almacenamiento de configuración de phpMyAdmin.

A continuación os dejo una muestra de cómo quedaría el archivo de configuración:

<?php
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
* ---------------------------------------------------------------------------------------------
* LAS ÚLTIMAS VERSIONES DE phpMyAdmin  4.6.* NOS OBLIGARÁN A INTRODUCIR CADENAS DE 32 CARACTERES
* ---------------------------------------------------------------------------------------------
*/
$cfg['blowfish_secret'] = 'ax1@fH6(5jkz)lr69'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/*
* Servers configuration
*/
$i = 0;

/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/*
* 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'] = 'password'; Indicar el password del usuario pma ←
/* 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';
/* Contrib / Swekey authentication */
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
/*
* End of servers configuration
*/

Una vez realizados los cambios, guardamos el archivo, cerramos el navegador y volvemos a cargar phpMyAdmin.

Si todo es correcto, los mensajes que nos mostraba la primera vez en la parte inferior de la página donde se nos advertía de que la configuración no estaba completa, tendrán que haber desaparecido.

phpMyAdmin 4.5.1 configurado