Aunque muchos usuarios necesitan la funcionalidad de un sistema de gestión de bases de datos como MySQL, pueden no sentirse cómodos de interactuar con el sistema únicamente desde la consola de MySQL.
PhpMyAdmin fue creado para que los usuarios puedan interactuar con MySQL a través de una interfaz web. En esta guía, discutiremos cómo instalar y proteger phpMyAdmin para que pueda utilizarlo con seguridad para administrar sus bases de datos desde un sistema Ubuntu 16.04.
Antes de empezar con esta guía, necesita completar algunos pasos básicos.
En primer lugar, asumiremos que está utilizando un usuario no root con privilegios de sudo, como se describe en los pasos 1-4 de configuración inicial del servidor de Ubuntu 16.04.
También vamos a suponer que ha completado una instalación de LAMP (Linux, Apache, MySQL y PHP) en su servidor Ubuntu 16.04. Si aún no se ha completado, puede seguir esta guía para instalar LAMP en Ubuntu 16.04.
Por último, hay importantes consideraciones de seguridad al utilizar software como phpMyAdmin, ya que:
Por estas razones, y debido a que se trata de una aplicación PHP ampliamente implementada que se suele atacar con frecuencia, nunca debe ejecutar phpMyAdmin en sistemas remotos a través de una simple conexión HTTP. Si no tiene un dominio existente configurado con un certificado SSL/TLS, puede seguir esta guía sobre cómo proteger Apache con Let’s Encrypt en Ubuntu 16.04.
Una vez que haya terminado con estos pasos, estará listo para comenzar con esta guía.
Para empezar, podemos simplemente instalar phpMyAdmin desde los repositorios predeterminados de Ubuntu.
Podemos hacerlo actualizando nuestro índice de paquetes local y luego usar el sistema de paquetería apt
para descargar los archivos e instalarlos en nuestro sistema:
- sudo apt-get update
- sudo apt-get install phpmyadmin php-mbstring php-gettext
Esto le hará algunas preguntas para configurar correctamente su instalación.
Advertencia: cuando aparece el primer mensaje, apache2 se resalta, pero no se selecciona. Si no pulsa Space para seleccionar Apache, el instalador no moverá los archivos necesarios durante la instalación. Pulse Space, Tab y, a continuación, Enter para seleccionar Apache.
dbconfig-common
para configurar la base de datosphpMyAdmin
El proceso de instalación realmente agrega el archivo de configuración phpMyAdmin Apache al directorio /etc/apache2/conf-enabled/
, donde se lee automáticamente.
Lo único que debemos hacer es habilitar explícitamente las extensiones PHP mcrypt
y mbstring
, que podemos hacer escribiendo:
- sudo phpenmod mcrypt
- sudo phpenmod mbstring
Después, necesitará reiniciar Apache para que sus cambios sean reconocidos:
- sudo systemctl restart apache2
Ahora puede acceder a la interfaz web visitando el nombre de dominio de su servidor o la dirección IP pública seguida de /phpmyadmin
:
- https://nombre_del_dominio_o_IP/phpmyadmin
Ahora puede iniciar sesión en la interfaz utilizando el nombre de usuario root
y la contraseña administrativa que configuró durante la instalación de MySQL.
Al iniciar sesión, verá la interfaz de usuario, que se verá así:
Hemos sido capaces de levantar y ejecutar nuestra interfaz phpMyAdmin con bastante facilidad. Sin embargo, todavía no hemos terminado. Debido a su ubicuidad, phpMyAdmin es un popular objetivo para los atacantes. Debemos tomar medidas adicionales para evitar el acceso no autorizado.
Una de las formas más sencillas de hacerlo es colocar un gateway delante de toda la aplicación. Podemos hacerlo utilizando las funcionalidades de autenticación y autorización de .htaccess
integradas de Apache.
Primero, necesitamos habilitar el uso de sobreescritura de archivos .htaccess
editando nuestro archivo de configuración de Apache.
Editaremos el archivo vinculado que se ha colocado en nuestro directorio de configuración de Apache:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Tenemos que agregar una directiva AllowOverride All
dentro de <Directory /usr/share/phpmyadmin>
del archivo de configuración, como esto:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Cuando haya agregado esta línea, guarde y cierre el archivo.
Para implementar los cambios realizados, reinicie Apache:
- sudo systemctl restart apache2
Ahora que hemos habilitado el uso de .htaccess
para nuestra aplicación, necesitamos crear un archivo para implementar realmente alguna seguridad.
Para que esto tenga éxito, el archivo debe crearse dentro del directorio de la aplicación. Podemos crear el archivo necesario y abrirlo en nuestro editor de texto con privilegios de root escribiendo:
- sudo nano /usr/share/phpmyadmin/.htaccess
Dentro de este archivo, necesitamos introducir la siguiente información:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Repasemos lo que significan cada una de estas líneas:
AuthType Basic
: Esta línea especifica el tipo de autenticación que estamos implementando. Este tipo implementará la autenticación de contraseña utilizando un archivo de contraseña.AuthName
: Esta opción establece el mensaje para el cuadro de diálogo de autenticación. Debe mantener este genérico para que los usuarios no autorizados no obtengan información sobre lo que está siendo protegido.AuthUserFile
: Define la ubicación del archivo de contraseña que se utilizará para la autenticación. Esto debe estar fuera de los directorios que se están sirviendo. Vamos a crear este archivo en breve.Require valid-user
: Especifica que sólo los usuarios autenticados deben tener acceso a este recurso. Esto es lo que realmente impide que usuarios no autorizados entren.Cuando haya terminado, guarde y cierre el archivo.
Ahora que hemos especificado una ubicación para nuestro archivo de contraseñas mediante el uso de la directiva AuthUserFile
dentro de nuestro archivo .htaccess
, necesitamos crear este archivo.
Necesitamos un paquete adicional para completar este proceso. Podemos instalarlo desde nuestros repositorios predeterminados:
- sudo apt-get install apache2-utils
Después, tendremos la utilidad htpasswd
disponible.
La ubicación que seleccionamos para el archivo de contraseña era “/etc/phpmyadmin/.htpasswd
”. Vamos a crear este archivo y pasarlo a un usuario inicial escribiendo:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Se le pedirá que seleccione y confirme una contraseña para el usuario que está creando. Posteriormente, el archivo se crea con la contraseña hash introducida.
Si desea introducir un usuario adicional, debe hacerlo sin el modificador -c
, así:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Ahora, al acceder a su subdirectorio phpMyAdmin, se le pedirá el nombre de cuenta y la contraseña adicional que acaba de configurar:
- https://nombre_del_dominio_o_IP/phpmyadmin
Después de ingresar la autenticación de Apache, se le llevará a la página de autenticación normal de phpMyAdmin para ingresar sus otras credenciales. Esto agregará una capa adicional de seguridad ya que phpMyAdmin ha sufrido vulnerabilidades en el pasado.
Ahora debería tener phpMyAdmin configurado y listo para usar en su servidor Ubuntu 16.04. Mediante esta interfaz, puede crear fácilmente bases de datos, usuarios, tablas, etc., y realizar las operaciones habituales como suprimir y modificar estructuras y datos.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Falta esto.
Colocar phpmyadmin en el servidor web y asignar propietario a www-data
mv /usr/share/phpmyadmin /var/www/html/ (en mi caso)
chown -R www-data /var/www/html/phpmyadmin
y ya estaria ;)
Si no esta en la carpeta html no lo vas a ver online ni de coña… por mucho que hayas seleccionado con el espacio el apache2.
Gracias.
Hola cómo hago para recuperar mi usuario y contraseña de phpmyadmin instalados en digitalocean?
He seguido el tutorial al pie de la letra, he de agradecertelo, ya que he conseguido visualizar el phpmyadmin, pero he tenido un pequeño problema y es que cuando estaba la instalación de apache y me pide la contraseña de mysql despues no me pide ninguna contraseña para el usuario root para acceder con mi usuario root, ahora bien, como podria crear otro usuario o cambiarle la contraseña al usuario root? porque me dio error, lo pego por si a alguien mas le pasa:
apache2_invoke: Enable configuration phpmyadmin apache2.service is not active, cannot reload. invoke-rc.d: initscript apache2, action “reload” failed.
Saludos.
I followed your instructions, but after installation, I cant access phpmyadmin through the browser, it says page not found…