- Introducción
- Instalación y configuración
- Configurar la contraseña de usuario root de MariaDB
- Eliminar usuario anonimo
- Deshabilitar el inicio de sesión del usuario root de forma remota
- Eliminar la base de datos test
- Recargar las tablas de privilegios
- Probando MariaDB
- ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
- error no. 2013: Lost Connection to mysql server during query
- Probando phpMyAdmin
- Introducción (Volver al índice General)
En este artículo explicaremos como instalar, LAMP y phpMyAdmin. LAMP es el acrónimo usado para describir un sistema de infraestructura de Internet que usa las siguientes herramientas:- Linux como sistema operativo.
- Apache como servidor web.
- MariaDB/MySQL como gestor de bases de datos.
- Perl, PHP, o Python como lenguajes de programación.
En nuestro caso usaremos como sistema operativo Linux Debian e instalaremos como gestor de bases de datos MariaDB y como lenguaje de programación PHP. Además, instalaremos phpMyAdmin como herramienta gráfica de administración de MariaDB/MySQL para crear, administrar, editar y eliminar bases de datos. - Instalación y configuración (Volver al índice General)
Primero actualizamos la lista de paquetes disponibles en los repositorios ejecutando como root el siguiente comando:$ sudo apt-get update
A continuación actualizamos los paquetes instalados. Se instalarán las nuevas versiones:
$ sudo apt-get upgrade
Finalmente, instalamos los paquetes necesarios:
$ sudo apt-get install apache2 php mariadb-server php-mysql phpmyadmin
Si hubiese instalado otro servidor web, durante la instalación se nos pedirá que seleccionemos el servidor web a configurar, que deberá ser
apache2
. También se nos preguntará si queremos configurar una base de datos para phpMyAdmin condebconfig-common
a lo que contestaremos con unSí
. Finalmente se nos pedirá que establezcamos una contraseña para el usuariophpmyadmin
en MaríaDB.El siguiente paso será configurar las distintas aplicaciones instaladas.
- Configuración de Apache (Volver al índice General)
- Habilitar acceso al directorio home del usuario (Volver al índice General)
Habilitando el directorio público de los usuario/home/$USER/public_html
, cada usuario tendrá su URL personal dentro del dominio raíz del sitio, por ejemplohttp://www.midominio.com/~usuario
. Para habilitarlo, ejecutaremos el siguiente comando que habilitará el módulouserdir
:$ sudo a2enmod userdir
Tendremos que aseguramos de que Apache accede al directorio
/home/usuario/public_html
. Para otorgar el acceso os aconsejo hagáis lo siguiente:
Primero comprobamos que el directorio existe, en caso de no existir, lo creamos:$ sudo mkdir /home/usuario/public_html
Otorgamos privilegios de lectura, escritura y ejecución al propietario y solo privilegio de ejecución al resto de usuarios al directorio personal
/home/usuario
:$ sudo chmod 701 /home/usuario
Si listamos el directorio
/home
obtendremos algo parecido a esto:$ ls -l /home total 24 drwx-----x 47 usuario usuario 4096 abr 26 18:20 usuario
Para el directorio
/home/usuario/public_html
haremos lo mismo.$ sudo chmod 701 /home/usuario/public_html
- Habilitar el módulo mod_rewrite (Volver al índice General)
El módulomod_rewrite
permite crear direcciones URL alternativas a las URL dinámicas generadas por nuestros sitios web, haciendo que sean más legibles, fáciles de recordar y facilite la taréa a los buscadores a la hora de indexarlas.Para habilitar el módulo ejecutaremos el siguiente comando:
$ sudo a2enmod rewrite
- Habilitar el módulo SSL para conexiones encriptadas seguras (Volver al índice General)
Para habilitar el módulo ejecutaremos el siguiente comando:$ sudo a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2
A continuación habilitamos el sitio
default-ssl
con el siguiente comando:$ sudo a2ensite default-ssl Enabling site default-ssl. To activate the new configuration, you need to run: systemctl reload apache2
Tras ejecutar los comandos anteriores, ya tendremos configurado nuestro Apache para servir conexiones seguras, pero con una salvedad, y es que el certificado que usa es uno que se instala por defecto.
Si queremos un certificado apropiado para nuestro sitio, tendremos que generar nuestros propios certificados. Pincha aquí para ver tutorial de como Crear certificado autofirmado para Apache.
El archivo con la configuración de nuestro sitio seguro será, en este caso,
/etc/apache2/sites-available/default-ssl.conf
. Este archivo habrá que modificarlo en caso de usar certificados propios.Si vamos a trabajar con el módulo SSL, sería conveniente implementar en vuestro servidor los siguientes contenidos publicados en ZeppelinuX, o al menos, tenerlos en cuenta o a mano por si os hacen falta:
- Reiniciar el servicio Apache para que surtan efecto los cambios (Volver al índice General)
Para que surtan efectos todos los cambios realizados tendremos que reiniciar el servicio ejecutando el siguiente comando:$ sudo systemctl restart apache2
- Habilitar el servicio Apache para que se inicie al arrancar (Volver al índice General)
Para habilitar el servicio Apache en el arranque ejecutaremos el siguiente comando:$ sudo systemctl enable apache2
También podemos comprobar si Apache se está ejecutando o no con el siguiente comando:
$ sudo systemctl status apache2
- Probando Apache (Volver al índice General)
La instalación por defecto de Apache incluye una página de bienvenida. Si en el navegador ingresaremos la URLhttp://localhost
obtendremos el siguiente resultado:
Pero podemos ser un poco creativos creando nuestros propios archivos o páginas de pruebas. Para probar Apache crearemos dos archivos (páginas de prueba), uno en el directorio raíz por defecto de Apache, en/var/www/html
y otro en el directorio/home/usuario/public_html
.Si nos interesa mantener la página de bienvenida que Apache trae por defecto deberemos renombrarla:
$ sudo mv -f /var/www/html/index.html /var/www/html/bienvenida.html
En
/var/www/html
crearemos el archivoindex.html
;$ sudo nano /var/www/html/index.html
Y añadiremos las siguientes líneas:
<!DOCTYPE html> <html lang="es"> <head> <title>Test Apache</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" $ </head/> <body> <h1>Hola mundo</h1> Apache está en ejecución </body> </head></html>
En el navegador ingresaremos la URL
http://localhost
y obtendremos el siguiente resultado:
Crearemos en/home/usuario/public_html
el archivoindex.html
;$ nano /home/usuario/public_html/index.html
Y añadiremos las siguientes líneas:
<!DOCTYPE html> <html lang="es"> <head> <title>Home usuario</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Directorio Home del usuario</h1> Apache está en ejecución </body> </html>
En el navegador ingresaremos la URL
http://localhost/~usuario
y obtendremos el siguiente resultado:
Si hemos optado por el cifrado de nuestro sitio habilitando el módulo SSL, al ingresar en el navegador la URL con el esquema https, veremos que el navegador nos presenta una página indicadonos que la conexión no es segura, debido a que nuestro certificado es autofirmado. Para continuar añadiremos la excepción.
No olvidar que los archivos contenidos en el directorio
public_html
deberán tener permiso de lectura para todos los usuarios.
- Habilitar acceso al directorio home del usuario (Volver al índice General)
- Configuración de PHP (Volver al índice General)
- Comprobar la versión de PHP instalada (Volver al índice General)
Para conocer la versión de PHP que tenemos instalada, ejecutaremos el siguiente comando:$ php -version PHP 7.0.27-0+deb9u1 (cli) (built: Jan 5 2018 13:51:52) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies
En el ejemplo vemos que la versión instalada de PHP es la 7.
- Configuración para PHP (Volver al índice General)
Si necesitamos cambiar alguna opción de PHP, deberemos editar/etc/php/7.0/apache2/php.ini
- Probando PHP (Volver al índice General)
Crearemos un archivotest.php
en el directorio raíz de Apache.$ sudo nano /var/www/html/test.php
Agregamos las siguientes líneas:
<?php phpinfo (); ?>
Abrimos el navegador web, introducimos la dirección
http://localhost/test.php
y obtendremos algo parecido a la imagen de abajo:
- Comprobar la versión de PHP instalada (Volver al índice General)
- Configuración de MariaDB (MySQL) (Volver al índice General)
- Configurar la contraseña de usuario root de MariaDB/MySQL (Volver al índice General)
Se recomienda configurar una contraseña para el usuario root para acceder al SGBD. Para hacerlo ejecutaremos el siguiente comando:$ sudo mysql_secure_installation
La primera parte de la salida es la siguiente:
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...
Que viene a decir que para iniciar sesión en MariaDB necesitamos la contraseña actual, pero si acabamos de instalar MaríaDB y aún no se ha configurado la contraseña del usuario root, la contraseña estará en blanco, por lo tanto, en este punto presionaremos la tecla intro. Una vez presionada la tecla intro nos indicara que la contraseña utilizada es correcta y pasamos a configurar la nueva contraseña:
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!
Ya hemos creado la contraseña del root para MariaDB.
- Eliminar usuario anonimo (Volver al índice General)
Por defecto en la instalación de MariaDB se crea un usuario anónimo, lo que permite a cualquier persona iniciar sesión en MariaDB sin tener una cuenta de usuario creada para ellos. Su función es para realizar pruebas y la instalación. Debemos eliminarlo antes de pasar a un entorno de producción. Por lo tanto, en este punto decimos que si (Y).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!
- Deshabilitar el inicio de sesión del usuario root de forma remota (Volver al índice General)
Normalmente el usuario root solo debería poder conectarse desde localhost. Esto asegura que alguien no puede adivinar la contraseña del usuario root de la red. Por ello, en este punto, también decimos que si (Y) a deshabilitar el inicio de sesión del usuario root de forma remota.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!
- Eliminar la base de datos test (Volver al índice General)
Por defecto, MariaDB viene con una base de datos llamada test que cualquiera puede acceder. Esto también es solo para pruebas y debe eliminarse antes de pasar a un entorno de producción. Volvemos en este punto a decir que si (Y) a la eliminación de la base de datos test.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!
- Recargar las tablas de privilegios (Volver al índice General)
El proceso termina recargando las tablas de privilegios asegurando que todos los cambios realizados hasta el momento surtirán efecto inmediatamente.
Volvemos a decir que si (Y) a recargar las tablas de privilegios. Seguidamente hace una limpieza y nos indica que se han completado todos los pasos anteriores y que la instalación ahora es segura.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ... 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! MariaDB has been installed and ready to use.
- Probando MariaDB (Volver al índice General)
Como aún solo tenemos un usuario, que es el root, estableceremos una conexión con el sistema gestor de bases de datos (SGDB) con el siguiente comando:$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 13 Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Como prueba final, pediremos un listado de las bases de datos:
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | phpmyadmin | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]>
- ERROR 1698 (28000): Access denied for user ‘root’@’localhost’ (Volver al índice General)
Si al intentar acceder con el usuario root con el siguiente comando:$ mysql -u root -p Enter password:
Obtenemos el siguiente error:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Podrá corregir dicho error siguiendo las indicaciones del artículo Corregir ERROR 1698 (28000): Access denied for user ‘root’@’localhost’ en MariaDB (MySQL) publicado en ZeppelinuX.
- error no. 2013: Lost Connection to mysql server during query (Volver al índice General)
Si se obtiene el mensaje «error no. 2013: Lost Connection to mysql server during query» al intentar conectarse a MariaDB mediante TCP/IP, esto es debido al sistema TCP wrappers (tcpd), el cual utiliza el sistema hosts_access(5) para permitir (allow) o denegar (disallow) las conexiones.Si se tiene este problema, debemos asegurarnos de agregar lo siguiente en el archivo
/etc/hosts.allow
:
Editamos el archivo con el siguiente comando:$ sudo nano /etc/hosts.allow
Y añadimos las siguientes líneas:
mysqld : ALL : ALLOW mysqld-max : ALL : ALLOW
Y similar para otros daemons de MariaDB/MySQL.
Nota: Los ejemplos anteriores son un caso simple, diciendole a tcpd que permita todas las conexiones desde cualquier lugar. Podemos utilizar una selección más apropiada de fuentes permitidas en lugar de utilizar el comodín ALL.
Por ejemplo, si queremos permitir conexiones solo desdelocalhost
y de una red en concreto, por ejemplozeppelinux.es
, la sintaxis sería la siguiente:mysqld : localhost,*.zeppelinux.es : ALLOW mysqld-max : localhost,*.zeppelinux.es : ALLOW
Para más información vea Archivos de configuración de Wrappers TCP
Podría también ser necesario editar el archivo
/etc/my.cnf
:$ sudo nano /etc/my.cnf
Y comentar la siguiente línea como sigue:
# skip-networking
- Configurar la contraseña de usuario root de MariaDB/MySQL (Volver al índice General)
- Probando phpMyAdmin (Volver al índice General)
En el navegador ingresaremos la URLhttps://localhost/phpmyadmin
y obtendremos el siguiente resultado:
Puede ocurrir que al ingresar la URL nos aparezca el siguiente mensaje: «La URL solicitada no se encuentra en este servidor (The requested URL was not found on this server)».Para solucionarlo, haremos lo siguiente:
- Copiaremos el archivo de configuración de phpMyAdmin para Apache en /etc/apache2/conf-available con el nombre phpmyadmin.conf (puedes ser el nombre que queramos):
$ sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
- Si hemos utilizado el nombre de archivo phpmyadmin.conf, habilitamos la configuración con el siguiente comando:
$ sudo a2enconf phpmyadmin
- Y finalmente, reiniciamos el servidor Apache:
$ sudo systemctl restart apache2
- Copiaremos el archivo de configuración de phpMyAdmin para Apache en /etc/apache2/conf-available con el nombre phpmyadmin.conf (puedes ser el nombre que queramos):
- Configuración de Apache (Volver al índice General)
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.!Muy importante!: No olvidéis echar un vistazo a las publicaciones relacionadas listadas más abajo, publicadas en </ZeppelinuX>. Seguro que hay algo que os interesa implementar en vuestro servidor Apache.
Deja una respuesta