Basado en Linux Debian 10

MariaDB & PhpMyAdminYouTube

Proyecto P4Hoy en día casi cualquier pagina web que vemos en internet funciona en conjunción con una base de datos. El servidor que estoy montando para este Proyecto P4 va a incorporar el gestor de contenidos WordPress para que podamos tener nuestra propia pagina web alojada en el servidor y tener un panel de control desde el que poder manejarla al igual que mi web ForatDot.Info.

Antiguamente las paginas web estaban construidas en HTML y prácticamente todo excepto las imágenes formaban parte del código fuente. Esto limitaba mucho su uso ya que no podías hacer cosas tan simples como crear un usuario que tuviera acceso a un panel de control. Las paginas no tenían panel de control, todo estaba escrito en el fichero HTML que se cargaba desde el navegador y sí querías agregar cosas tenias que editar el fichero fuente.

Por suerte todo avanza con el tiempo y ahora todo está repartido, las imágenes van en su directorio, los ficheros de programación que dicen donde va cada cosa y como tiene que hacerlo y por otro lado la base de datos que incorpora prácticamente todo lo que le introducimos a la web una vez está montada.

Esto hace la web mucho más flexible y no necesitamos tener que ir editando ficheros fuente para agregar cosas si no que las agregamos desde su panel de control y él las guarda en la base de datos

Instalando MariaDB en Debian GNU/Linux

Para comenzar nos identificamos como super usuario root con  …

su

Seguidamente instalamos el paquete servidor y el cliente de MariaDB con …

apt install mariadb-server mariadb-client

Y veremos lo siguiente …

MariaDB

Pulsamos la tecla S y Enter.

Seguridad para nuestro servidor de bases de datos

Ahora que tenemos MariaDB instalada vamos a ejecutar el script de seguridad que incluye ejecutando lo siguiente …

mysql_secure_installation

Y veremos lo siguiente …

MariaDB-root

Comenzamos pulsando la tecla Enter

MariaDB Password

Continuamos pulsando la tecla Y y Enter

MariaDB-repite-password

Introducimos la contraseña para el administrador del servidor de bases de datos, pulsamos Enter y volvemos a introducir la contraseña para que verifique que no nos hemos equivocado …

MariaDB-remove-user

Eliminamos el usuario anónimo pulsando la tecla Y y continuamos con Enter

MariaDB-remove-remote

Deshabilitamos el acceso remoto al servidor de bases de datos con el usuario root con la tecla Y y Enter

MariaDB-remove-test

Por defecto MariaDB nos crea una base de datos llamada Test, la eliminamos con la tecla Y y Enter

MariaDB-privilegios

Recargamos las tablas de privilegios para que los cambios realizados se hagan efectivos con la tecla Y y Enter

MariaDB-complete

Ahora ya tenemos instalado correctamente el servidor de bases de datos MariaDB.

Cómo instalar PhpMyAdmin en Debian GNU/Linux

Para usar MariaDB vamos a instalar PhpMyAdmin el cual nos ofrece un panel de control desde el que podemos hacer de todo con nuestro servidor de bases de datos.

La documentación oficial nos recomienda que instalemos varios paquetes que hacen que el programa funcione correctamente, vamos a instalarlos con …

apt install php-zip php-gd php-mbstring

PhpMyAdmin no forma parte de los repositorios de Debian por lo que tenemos que descargarlo desde la web oficial. Desde aquí podemos ver todas las versiones.

Vamos a descargarnos la versión 4.9.5 que es compatible con la versión de PHP 7.3 que instalamos con el tutorial sobre cómo instalar el servidor web Apache

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz

Una vez descargado lo descomprimimos con …

tar xvzf phpMyAdmin-4.9.5-all-languages.tar.gz

Ahora vamos a mover el directorio descomprimido de phpmyadmin al directorio /usr/share que es donde phpmyadmin espera encontrar sus ficheros con …

mv phpMyAdmin-4.9.5-all-languages /usr/share/phpmyadmin

Ya podemos borrar el fichero que nos descargamos desde la web oficial con …

rm phpMyAdmin-4.9.5-all-languages.tar.gz

Directorios en PhpMyAdmin

Este panel de control para bases de datos necesita tener en la ruta /var/lib un directorio temporal tra su directorio de phpmyadmin así que vamos a crearlo con …

mkdir -p /var/lib/phpmyadmin/tmp

Le asignamos el usuario y grupo web para que el servidor Apache pueda trabajar con el …

chown -R www-data:www-data /var/lib/phpmyadmin

Base de datos para PhpMyAdmin

PhpMyAdmin para funcionar correctamente necesita una base de datos con sus tablas de almacenamiento y un usuario llamado pma que pueda usarla.

Cuando instalamos Phpmyadmin también instalamos un comando llamado create_tables.sql. Este comando en formato SQL contiene todos los comandos necesarios para crear las tablas de almacenamiento que necesita.

Sabido esto vamos a ejecutar el comando como dice la web oficial …

mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

Una vez ejecutado el comando vamos a conectarnos al servidor de bases de datos con …

mysql -p -u root

Insertamos la contraseña que le dimos en la instalación al administrador root y pulsamos la tecla Enter.

Ahora vamos a crear el usuario pma y damos una contraseña y le damos permisos con  …

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'contraseñaparaelusuariopma';

Ahora que tenemos el usuario pma, su contraseña y dados los permisos para que pueda trabajar con phpmyadmin, vamos a crear un usuario para que pueda acceder a PhpMyAdmin y pueda trabajar con las bases de datos tal y como recomienda la documentación oficial con …

GRANT ALL PRIVILEGES ON *.* TO 'nuevousuario'@'localhost' IDENTIFIED BY 'contraseñaparaelnuevousuario' WITH GRANT OPTION;

Ahora tenemos un nuevo usuario que será con el que tenemos que acceder a phpmyadmin, salimos del servidor de bases de datos con …

exit

Configurando PhpMyAdmin

Para comenzar vamos al directorio donde se aloja phpmyadmin con …

cd /usr/share/phpmyadmin

Seguidamente copiamos y renombramos su fichero de configuración con …

cp config.sample.inc.php config.inc.php

Ahora vamos a editar el fichero de configuración con …

vi config.inc.php

Seguridad en PhpMyAdmin

En las primeras lineas nos encontramos con la opción blowfish_secret. Hemos de agregar una contraseña de 32 caracteres quedándonos así …

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

Continuamos buscando las siguientes lineas controluser y controlpass, las descomentamos eliminando las dos // quedándonos así e introducimos entre las ‘ ‘ el usuario pma en controluser y la contraseña en controlpass = ‘contraseña’.

Seguidamente descomentamos hasta la linea export_templates quedándonos así …

Config-phpmyadmin

Finalmente bajamos al final del fichero, pulsamos la tecla i e insertamos la siguiente linea …

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Guardamos el fichero y salimos del editor con la tecla ESC y :wq!

Vinculando PhpMyAdmin con Apache

Ahora vamos a crear su fichero de configuración para que el servidor web Apache pueda trabajar con el …

vi /etc/apache2/conf-available/phpmyadmin.conf

Os recomiendo llamar al Alias de una forma diferente que no phpmyadmin ya que todo el mundo sabe que si ponemos el dominio.com/phpmyadmin accederán a tu panel de control y podrán empezar a jugar con el, en mi caso lo he llamado paneldb así que lo mejor es poner un Alias que solo conozcas tu y así al que quiera jugar con nosotros no se lo ponemos fácil.

Seguidamente introducimos las siguientes lineas …

Alias /paneldb /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php

<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>

php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/$
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">

SetHandler application/x-httpd-php
</FilesMatch>

php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/sh$
php_admin_value mbstring.func_overload 0
</IfModule>

</Directory>

# Autorizar para la configuración
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>

# No permitir el acceso web a directorios que no lo necesitan
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>

Finalmente guardamos el fichero y salimos del editor con la tecla ESC y :wq!

Ahora activamos el fichero de rutas que acabamos de crear para que lo coja Apache con …

a2enconf phpmyadmin.conf

Reiniciamos Apache con …

systemctl reload apache2

Ahora puedes acceder a PhpMyAdmin desde el navegador de cualquier ordenador conectado a tu red introduciendo la dirección http://la.ip.de.tuservidor/paneldb y veremos la pantalla de login …

phpmyadmin

Introducimos el usuario nuevousuario, su contraseña y pulsamos Enter

panel de control phpmyadmin

Para finalizar le vamos a decir al sistema que cargue el servidor de bases de datos MariaDB en el arranque del sistema operativo con …

systemctl enable mariadb

Con este panel de control podemos crear bases de datos, usuarios, darles permisos y todo lo que se necesita a la hora de trabajar con las bases de datos.

No es necesario tener grandes conocimientos para familiarizarte rápido con este programa. Así que no nos resultará difícil trabajar con él cuando lo necesitemos en próximos artículos.