MariaDB y phpMyAdmin en openSUSE 15.1

Como ya lo dice el título, este artículo va a tratar acerca de la instalación y configuración básica para poner en marcha el motor de base de datos MariaDB (Fork de MySQL) y la herramienta web phpMyAdmin en openSUSE 15.1.

Esta pequeña guía es una adaptación y actualización del tutorial que escribí hace años sobre el proceso de instalación y configuración básico de MySQL.


Motor de base de datos MariaDB

Los pasos de configuración que van a continuación son los más básicos para poner en marcha el motor de base de datos MariaDB.
  1. Instalamos los paquetes necesarios a partir de los repositorios en linea o del propio DVD de instalación mediante el comando zypper:
    testsrv:~ # zypper install mariadb
  2. Luego activamos el inicio automático para el servicio mariadb durante el arranque del sistema operativo:
    testsrv:~ # systemctl enable mariadb
  3. El siguiente paso consiste en iniciar la base de datos MariaDB en modo seguro (safe mode) para poder asignarle una contraseña al usuario root, ya que su contraseña por defecto se desconoce. Para ello ejecutamos la siguiente directiva:
    testsrv:~ # mysqld_safe --skip-grant-tables &
  4. Mientras la base de datos se encuentra iniciada en modo seguro procedemos a cambiar la contraseña del usuario root y realizar otras configuraciones adicionales mediante la ejecución del asistente de configuración mysql_secure_instalation, lo ejecutamos de la siguiente forma:
    testsrv:~ # mysql_secure_installation

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current
    password for the root user. If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none):
    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.

    Set root password? [Y/n] Y
    New password:
    Re-enter new password:

    Password updated successfully!
    Reloading privilege tables..
    ... Success!


    By default, a MariaDB installation has an anonymous user, allowing anyone
    to log into MariaDB without having to have a user account created for
    them. This is intended only for testing, and to make the installation
    go a bit smoother. You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n] Y
    ... Success!

    Normally, root should only be allowed to connect from 'localhost'. This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] Y
    ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can
    access. This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n] Y
    - Dropping test database...
    ... Success!
    - Removing privileges on test database...
    ... Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n] Y
    ... Success!

    Cleaning up...

    All done! If you've completed all of the above steps, your MariaDB
    installation should now be secure.

    Thanks for using MariaDB!
  5. Realizados todos los ajustes procedemos a parar la base de datos para salir del modo seguro. Al ejecutar el siguiente comando deberemos introducir la nueva contraseña especificada en el paso anterior:
    testsrv:~ # mysqladmin -u root -p shutdown
    Enter password:
    [1]+ Hecho mysqld_safe --skip-grant-tables
    testsrv:~ #
  6. Finalmente iniciamos el servicio mariadb de la forma normal:
    testsrv:~ # systemctl start mariadb
Con los pasos anteriores ya tenemos el motor de base de datos MariaDB corriendo y listo para ser utilizado.


Herramienta phpMyAdmin

  1. Primero instalamos algunos paquetes necesarios:
    testsrv:~ # zypper install apache2 apache2-mod_php7 php7 php7-mysql php7-mbstring php7-pear-MDB2_Driver_mysqli
  2. Una de las formas para obtener esta herramienta es descargándola desde su sitio web, para luego descomprimirla en el directorio /srv/www/htdocs y asignarle los permisos correspondientes como se aprecia en la siguiente secuencia de comandos:
    testsrv:~ # cd /srv/www/htdocs/
    testsrv:/srv/www/htdocs # wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz
    testsrv:/srv/www/htdocs # tar -xzf phpMyAdmin-4.9.0.1-all-languages.tar.gz
    testsrv:/srv/www/htdocs # mv phpMyAdmin-4.9.0.1-all-languages phpMyAdmin
    testsrv:/srv/www/htdocs # rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
    testsrv:/srv/www/htdocs # chmod -Rf 755 phpMyAdmin
    testsrv:/srv/www/htdocs # chown -Rf wwwrun:www phpMyAdmin

  3. El siguiente paso consiste en crear una copia llamada config.inc.php a partir del archivo /srv/www/htdocs/phpMyAdmin/config.sample.inc.php
    testsrv:~ # cd /srv/www/htdocs/phpMyAdmin
    testsrv:/srv/www/htdocs/phpMyAdmin # cp config.sample.inc.php config.inc.php

  4. Editamos el nuevo archivo config.inc.php,
    testsrv:/srv/www/htdocs/phpMyAdmin # vi config.inc.php
    y verificamos la configuración de las directivas auth_type y host. El contenido debería ser similar a lo sigue:
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['host'] = 'localhost'; #(OBS: probar 127.0.0.1 si no funciona)
  5. Guardamos los cambios y verificamos que el servidor Apache tenga activado el soporte php en la directiva APACHE_MODULES del archivo /etc/sysconfig/apache2, y si no lo está lo incluimos:
    testsrv:~ # vi /etc/sysconfig/apache2
    APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php7"
  6. Luego especificamos los niveles de ejecución del servicio Apache y lo iniciamos:
    testsrv:~ # systemctl enable apache2
    testsrv:~ # systemctl start apache2

  7. Con estos pasos concluimos con la puesta en marcha de Apache, lo que nos permitirá acceder localmente a phpMyAdmin mediante la siguiente URL:
    http://localhost/phpMyAdmin


Habilitación de puertos en el cortafuegos

Si necesitamos acceder a los servicios de MariaDB y Apache (para acceder a phpMyAdmin) remotamente y no solo trabajar en forma local, necesitamos habilitar los puerto correspondiente en el firewall de openSUSE que se puede hacer fácilmente a través de YAST, o mejor aún a través de la línea de comandos como se explicará a continuación.
  1. Editamos el archivo /etc/firewalld/zones/public.xml:
    testsrv:/etc/sysconfig # vi /etc/firewalld/zones/public.xml
  2. Configuración a la que le agregamos la línea referente al protocolo http, debiendo quedar similar a lo que sigue:
    <?xml version="1.0" encoding="utf-8"?>
    <zone>
    <short>Public</short>
    <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
    <service name="ssh"/>
    <service name="http"/>
    <service name="mysql"/>
    <service name="dhcpv6-client"/>
    </zone>
    OBS: La directiva anterior habilitará en el cortafuego los puertos de los servicios Apache, MariaDB y SSH.
  3. Guardamos los cambios y salimos del editor, en mi caso con los comandos :wq para Vim, y luego procedemos a reiniciar el servicio del firewall de openSUSE con el siguiente comando:
    testsrv:/etc/sysconfig # systemctl restart firewalld
  4. Con los pasos anteriores hemos habilitado los puertos deseados en el cortafuego, con lo cual hemos culminado.


Observaciones finales

  • openSUSE 15.1 x86_64
  • MariaDB v10.2.22
  • Apache 2 v2.4.33
  • php 7
  • phpMyAdmin v4.9.0.1

Estos fueron todos los pasos para poner en marcha el servicio MariaDB y la herramienta web phpMyAdmin que permite administrar dicho motor de base de datos.

Comentarios