Servidor MariaDB + phpMyAdmin

_images/mariadb.png

Después de instalar nuestro Servidor Web con Lighttpd y PHP, vamos a completarlo instalando el Servidor de Bases de Datos MariaDB y phpMyAdmin como interfaz de gestión para la manipulación de bases de datos.

Instalación de MariaDB

sudo apt-get install mariadb-server mariadb-client -y

Cuando finalice la instalación, podemos asegurarlo ejecutando el siguiente script:

mysql_secure_installation

Las respuestas deben de quedar así:

Answer all the questions as shown below:
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Gestión del servicio en MariaDB

  1. Arrancar el servidor MariaDB:

    sudo systemctl start mariadb.service
    o
    sudo systemctl start mariadb
    
  2. Parar el servidor MariaDB:

    sudo systemctl stop mariadb.service
    o
    sudo systemctl stop mariadb
    
  3. Reiniciar el servidor MariaDB:

    sudo systemctl restart mariadb.service
    o
    sudo systemctl restart mariadb
    
  4. Recargar el servidor MariaDB:

    sudo systemctl reload mariadb.service
    o
    sudo systemctl reload mariadb
    
  5. Ver el estado del servidor MariaDB:

    sudo systemctl status mariadb.service
    o
    sudo systemctl status mariadb
    
  6. Activar en el arranque el servidor MariaDB:

    sudo systemctl enable mariadb.service
    o
    sudo systemctl enable mariadb
    

Instalación de phpMyAdmin

_images/phpmyadmin.jpg

PHPMyAdmin es una popular herramienta gratuita para la gestión sencilla de bases de datos MySQL/MariaDB a través de interface Web.

Instalar PHPMyAdmin en Raspberry Pi es muy sencillo. Antes, deberemos tener instalado un servidor Web como Lighttpd con PHP y una base de datos como MariaDB.

Para instalar PHPMyAdmin desde una consola de comandos hacemos,

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

Se nos hará una serie de preguntas para configurar PHPMyAdmin. En primer lugar, seleccionamos como servidor lighttpd pulsando ESPACIO y después ENTER.

A continuación, se nos pedirá la contraseña para “root” para la base de datos, y una contraseña para acceder PHPMyAdmin.

Ahora creamos un nuevo usuario en la base de datos, que usaremos con PHPMyAdmin. Para ello, accedemos a MariaDB como root

sudo mariadb -u root -p

Y empleamos el siguiente comando para crear un usuario “username” y contraseña “password” (sustituir por los datos que queráis).

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Salimos de la consola de MariaDB haciendo,

quit

Finalmente reiniciamos lighttpd:

sudo service lighttpd restart

Ahora podemos comprobar que todo funciona correctamente abriendo un navegador web y acudiendo a la dirección

http://DirecciónIP/phpmyadmin

Posible error

Si tras instalar el servidor MariaDB (MySQL), e intentar acceder a phpMyAdmin con la cuenta de root, obtenemos este error: ERROR 1698: Access denied for user 'root'@'localhost'

Para corregirlo, ejecutaremos los siguientes comandos y sentencias:

Tendremos que ejecutar el cliente de MariaDB (MySQL) como superusuario precedido del comando sudo:

$ sudo mysql -u root -p

Una vez que hemos accedido al servidor, seleccionamos la base de datos mysql:

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Listamos el contenido de los campos user y plugin:

MariaDB [mysql]> SELECT user, plugin FROM user;
+------------+-------------+
| user       | plugin      |
+------------+-------------+
| root       | unix_socket |
| phpmyadmin |             |
+------------+-------------+
2 rows in set (0.00 sec)

Actualizamos de unix_socket a mysql_native_password:

MariaDB [mysql]> UPDATE user SET plugin="mysql_native_password" WHERE user="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Comprobamos los cambios listando de nuevo los campos user y plugin:

MariaDB [mysql]> SELECT user, plugin FROM user;
+------------+-----------------------+
| user       | plugin                |
+------------+-----------------------+
| root       | mysql_native_password |
| phpmyadmin |                       |
+------------+-----------------------+
2 rows in set (0.00 sec)

Forzamos al servidor a recargar los privilegios de los usuarios, logrando que los cambios surtan efecto tras la ejecución de la sentencia sin necesidad de reiniciar el servidor:

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Cerramos la conexión con el servidor y cerramos el cliente:

MariaDB [mysql]> exit;

Ahora, probamos sin sudo:

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.3.17-MariaDB-0+deb10u1 Raspbian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>

Correcto, ya podemos acceder con el usuario root tanto en la consola de MariaDB como en phpMyAdmin