Cómo instalar y asegurar phpMyAdmin en Ubuntu 18.04 LTS
phpMyAdmin es una herramienta de administración gratuita y de código abierto para MySQL y MariaDB. phpMyAdmin es una herramienta basada en la web que te permite gestionar fácilmente las bases de datos MySQL o MariaDB. Puedes realizar tareas de administración como crear, editar o eliminar bases de datos, importar y exportar copias de seguridad de bases de datos, realizar búsquedas y gestionar usuarios y permisos mediante phpMyAdmin.
Características
- Soporte multilingüe.
- Importar datos desde CSV y SQL.
- Proporciona gráficos en vivo para monitorizar la actividad del servidor MySQL como conexiones, procesos, uso de CPU/memoria, etc.
- Búsqueda global en una base de datos o en un subconjunto de ella.
- Interfaz web sencilla y fácil de usar.
- Exportación de datos a varios formatos como, CSV, SQL, XML, PDF, Word, Excel, LaTeX, y otros.
En este tutorial, vamos a explicar cómo instalar y asegurar phpMyAdmin en el servidor Ubuntu 18.04.
Requisitos
- Un servidor con Ubuntu 18.04.
- Un usuario no root con privilegios sudo.
Instalar phpMyAdmin
Antes de empezar, tendrás que instalar Apache y MySQL en tu servidor. Puedes instalarlo con el siguiente comando:
sudo apt-get install apache2 mysql-server -y
Por defecto, phpMyAdmin no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio de PHP de terceros a tu sistema.
Puedes añadirlo simplemente ejecutando el siguiente comando:
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
Una vez añadido el repositorio, instala phpMyAdmin ejecutando el siguiente comando:
sudo apt-get install phpmyadmin php-mbstring php-gettext -y
Durante la instalación, se te pedirá que elijas el servidor web como se muestra a continuación:
Elige Apache y haz clic en el botón Aceptar. Serás redirigido a la siguiente página:
Ahora, haz clic en el botón Sí. Deberías ver la siguiente página:
Aquí, proporciona tu contraseña de la aplicación MySQL para phpMyAdmin y haz clic en el botón Aceptar.
Una vez instalado el phpMyAdmin, habilita la extensión PHP mbstring con el siguiente comando:
sudo phpenmod mbstring
A continuación, reinicia el servicio de Apache para aplicar los cambios:
sudo systemctl restart apache2
Configurar la autenticación de usuarios
phpMyAdmin ha creado automáticamente un usuario de base de datos llamado phpmyadmin con la contraseña administrativa que has establecido durante la instalación. Pero se recomienda crear un usuario distinto para gestionar las bases de datos a través de la interfaz web de phpMyAdmin. En la última versión de MariaDB, el usuario raíz de MySQL está configurado para autenticarse utilizando el plugin auth_socket por defecto. Por tanto, si quieres entrar en phpMyAdmin como usuario raíz de MySQL, tendrás que cambiar su método de autenticación de auth_socket a mysql_native_password.
En primer lugar, inicia sesión en el shell de MySQL con el siguiente comando:
sudo mysql
A continuación, comprueba el método de autenticación del usuario MySQL con el siguiente comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Salida:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *AC18DF5CAE34BF4796EF975702F038A566B48B42 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.01 sec)
En la salida anterior, deberías ver que el usuario root utiliza el complemento auth_socket.
Puedes configurar la cuenta root para que se autentique con una contraseña ejecutando el siguiente comando:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
A continuación, vacía los privilegios con el siguiente comando:
mysql> FLUSH PRIVILEGES;
Ahora, comprueba los métodos de autenticación ejecutando el siguiente comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Salida:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *AC18DF5CAE34BF4796EF975702F038A566B48B42 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.01 sec)
A continuación, crea un usuario independiente con el nombre phpmyadminuser para conectarte a phpMyAdmin.
En primer lugar, inicia sesión en el shell de MySQL:
mysql -u root -p
Introduce tu contraseña de root, y luego crea un usuario con el siguiente comando:
MariaDB [(none)]> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'password';
A continuación, concede los privilegios adecuados a phpmyadminuser con el siguiente comando:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Por último, sal del shell de MySQL con el siguiente comando:
MariaDB [(none)]> exit;
Ahora, abre tu navegador web y escribe la URL http://your-server-ip/phpmyadmin. Serás redirigido a la siguiente página:
Aquí, proporciona tu nombre de usuario y tu contraseña. A continuación, haz clic en el botón Ir. Deberías ver el panel de control de PhpMyAdmin en la siguiente página:
Asegurar PhpMyAdmin
Ahora phpMyAdmin está instalado y configurado. Pero se recomienda asegurar tu instancia de phpMyAdmin para evitar accesos no autorizados Puedes asegurar phpMyAdmin utilizando las funcionalidades de autenticación y autorización .htaccess integradas en Apache.
Para ello, primero habilita el uso de las anulaciones del archivo .htaccess editando el archivo phpmyadmin.conf:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Realiza los siguientes cambios:
<Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php AllowOverride All
Guarda y cierra el archivo. A continuación, reinicia el servicio de Apache para aplicar los cambios:
sudo systemctl restart apache2
A continuación, crea un archivo .htaccess dentro del directorio phpmyadmin:
sudo nano /usr/share/phpmyadmin/.htaccess
Añade las siguientes líneas:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Guarda y cierra el archivo. A continuación, crea un usuario llamado admin con la utilidad htpasswd:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd admin
Salida:
New password: Re-type new password: Adding password for user admin
Tu instancia de phpMyAdmin está ahora protegida con una capa adicional de autenticación.
Ahora, abre tu navegador web y escribe la URL http://your-server-ip/phpmyadmin. Serás redirigido al nombre de cuenta y la contraseña adicionales que acabas de configurar, como se muestra a continuación:
Ahora, proporciona tu nombre de usuario y la contraseña y haz clic en el botón Iniciar sesión. Deberías ser redirigido a la página normal de autenticación de phpMyAdmin.