Ejercicio 1: Instalación de phpmyadmin
ENTREGA
Parte 1
Captura donde se vea la base de datos creada en el punto 1
Parte 2
¿Cómo has quitado la configuración de acceso a phpmyadmin en el punto 5?
Parte 3
Captura del VirtualHost
Parte 4
Captura accediendo a phpmyadmin con el usuario del punto 1
A la derecha en rojo muestro el campo donde se indica con qué usuario hemos iniciado sesión.
REALIZACIÓN
Paso 0
Instalar
mariadb-server
Hacer que el usuario root acceda con contraseña
Por defecto el usuario root puede hacer login sin contraseña, porque internamente mariadb lo almacena con una password inválida:
MariaDB [(none)]> SELECT host, user, password FROM mysql.user;
+-----------+-------------+----------+
| Host | User | Password |
+-----------+-------------+----------+
| localhost | mariadb.sys | |
| localhost | root | invalid |
| localhost | mysql | invalid |
+-----------+-------------+----------+
Este funcionamiento es intencional, para que luego nosotros manualmente cambiemos a la contraseña que queramos.
Cambio la contraseña con:
Después de esto, la contraseña se almacena:
MariaDB [(none)]> SELECT host, user, password FROM mysql.user;
+-----------+-------------+-------------------------------------------+
| Host | User | Password |
+-----------+-------------+-------------------------------------------+
| localhost | mariadb.sys | |
| localhost | root | *04E6E1273D1783DF7D57DC5479FE01CFFDFD0058 |
| localhost | mysql | invalid |
+-----------+-------------+-------------------------------------------+
Ya podríamos hacer login normalmente con:
A partir de ahora, de cualquier manera que intentemos entrar con root (con sudo o sin sudo por ejemplo), nos obligará a escribir la contraseña.
Paso 1
Acceder a mariadb con root y contraseña
Crear base de datos
Crear usuario con permisos sobre
phpmyadmin_db
CREATE USER 'phpmyadmin_user' IDENTIFIED BY '1234';
GRANT USAGE ON *.* TO 'phpmyadmin_user'@localhost IDENTIFIED BY '1234';
GRANT ALL privileges ON `phpmyadmin_db`.* TO 'phpmyadmin_user'@localhost;
FLUSH PRIVILEGES;
Muestro que los cambios se han hecho:
MariaDB [(none)]> SHOW GRANTS FOR 'phpmyadmin_user'@localhost;
+------------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin_user@localhost |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `phpmyadmin_user`@`localhost` IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' |
| GRANT ALL PRIVILEGES ON `phpmyadmin_db`.* TO `phpmyadmin_user`@`localhost` |
+------------------------------------------------------------------------------------------------------------------------+
Paso 2
Instalar
phpmyadmin
desde repositorios
Nos pregunta qué servidor web queremos dejar configurado para phpmyadmin
, y eligimos apache2
:
Decimos que sí para que configure la base de datos phpmyadmin_db
que usará phpmyadmin
:
Especificamos método de conexión a MariaDB por Unix socket:
Dejamos por defecto el método de autenticación con MariaDB:
Base de datos a utilizar por phpmyadmin
:
Usuario para la conexión con esa base de datos:
Escribimos 1234
, la contraseña del usuario phpmyadmin_user
. La necesitará para poder acceder y configurar su base de datos:
Confirmamos la contraseña:
Termina la instalación
Comprobar el acceso en /phpmyadmin
Por defecto, tenemos este "error":
Lo escribo entre comillas porque no es un error en sí, sino que apache no tiene funcionando la ejecución de código php.
Nos está mostrando el index.php
en crudo.
Para solucionarlo:
Hacemos Ctrl F5 para recargar ignorando la caché, y ya funciona:
Paso 3
¿Se ha creado en el DocumentRoot un directorio que se llama phpmyadmin?
No.
¿Cómo es que podemos acceder?
El paquete phpmyadmin
nos generó el enlace simbólico phpmyadmin.conf
en /etc/apache2/conf-available
, que por defecto se habilita en conf-enabled
.
El fichero original /etc/phpmyadmin/apache.conf
contiene 2 directivas que hacen que funcione el acceso:
Lo que exista en conf-enabled
es configuración global, por lo tanto este Alias y Directory se tendrían en cuenta desde cualquier VirtualHost.
Paso 5
Deshabilitar acceso a phpmyadmin
Comprobar que no se puede acceder
Crear VirtualHost con
ServerName
basededatos.adrianjaramillo.org
y que muestre phpmyadmin
Creo /etc/apache2/sites-available/phpmyadmin.conf
con el siguiente contenido:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName basededatos.adrianjaramillo.org
DocumentRoot /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
# limit libapache2-mod-php to files and directories necessary by pma
<IfModule mod_php7.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Lo habilito:
Reinicio Apache:
Modifico mi /etc/hosts
:
Muestro que accedo a phpmyadmin desde nombre y funciona:
Paso 6
Acceder a phpmyadmin con el usuario del punto 1
phpmyadmin_user
A la derecha vemos que estamos conectados con el usuario requerido:
Comprobar que podemos gestionar su base de datos
Muestro que puedo crear una tabla:
Muestro que puedo borrar una tabla: