Servidor MariaDB + phpMyAdmin¶
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¶
Arrancar el servidor MariaDB:
sudo systemctl start mariadb.service o sudo systemctl start mariadb
Parar el servidor MariaDB:
sudo systemctl stop mariadb.service o sudo systemctl stop mariadb
Reiniciar el servidor MariaDB:
sudo systemctl restart mariadb.service o sudo systemctl restart mariadb
Recargar el servidor MariaDB:
sudo systemctl reload mariadb.service o sudo systemctl reload mariadb
Ver el estado del servidor MariaDB:
sudo systemctl status mariadb.service o sudo systemctl status mariadb
Activar en el arranque el servidor MariaDB:
sudo systemctl enable mariadb.service o sudo systemctl enable mariadb
Instalación de phpMyAdmin¶
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