Instalación y puesta en marcha de MySQL Server
Introducción
En la siguiente práctica pondremos en marcha un servidor de MySQL, para ello utilizaremos un laboratorio básico con un Ubuntu Server 20.04 y un XUbuntu 20.04 como cliente. Una vez creado el laboratiorio instalaremos MySQL Server tal y como se pide en la práctica y se haran las pruebas pertinentes de conectividad.
Laboratorio
En la imagen sepueden apreciar los equipos y los servicios a instalar.
.
Podemos ver que ambos equipos poseen dos interfaces de red, uno NAT para conectarse a internet y el otro a una red interna que lamaremos asgbd. En el esquema estan las IPs a utilizar en esta conexión interna.
En el servidor instalaremos MySql Server y un servidor ssh como Open SSH. En el cliente tendremos los clientes, de ssh viene por defecto, tendremos que instalar el cliente de mySql.
Preparación e instalación del servidor
Instalación de Ubuntu Server 20.04 y de los servicios.
El alumno debe tener instalada una máquina con Ubuntu Server, con las interfaces de red explicadas en el punto anterior laboratorio. Entendemos que esta parte el alumno tiene ya los conocimientos para realizarla.
Comprobaremos la configuración IP de red interna:
shell$> ip addr show enp0s8
Instalamos MySQL Server utilizando el gestor de paquetes apt tal y como se ha visto en clase. Una vez realizado comprobamos:


Conexión con el cliente mysql
Con la instalación del servidor también se nos debe haber instalado el ciente. lo podemos comprobar:
shell$> mysql --version
En caso de error instalaremos el cliente:
shell$> sudo apt-get install mysql-client
si todo funciona correctamente tendremos el siguiete resutlado:

Comprobaremos que al servidor solo nos podemos conectar por la interfaz lo localhost y no por la red utilizando la IP del servidor. Es el funcionamiento standar por seguridad tras la instalación.

Una vez tenemos el servidor configurado pasaremos al cliente.
Preparación del cliente
Instalción de XUbuntu
El alumno instalará y configurará XUbuntu segun las indicaciones en el punto de laboratorio.
Comprobación de la red interna
Una vez instalado y configurado podemos comprobar la IP de la red insterna
shell:~$ ip addr show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:2a:fe:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.2/24 brd 192.168.100.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::b25a:6e6:886b:9017/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Instalación del cliente de MySql
PAra poder conectar desde el servidor necesitamos instalar el cliente (ojo sólo el cliente) en cualquier máquina con la que queramos conectar desde el terminal.
shell:~$ sudo apt-get install mysql-client
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
mysql-client
0 actualizados, 1 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/9.416 B de archivos.
Se utilizarán 113 kB de espacio de disco adicional después de esta operación.
Seleccionando el paquete mysql-client previamente no seleccionado.
(Leyendo la base de datos ... 203423 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../mysql-client_8.0.26-0ubuntu0.20.04.3_all.deb ...
Desempaquetando mysql-client (8.0.26-0ubuntu0.20.04.3) ...
Configurando mysql-client (8.0.26-0ubuntu0.20.04.3) ...
Comprobamos que tenemos conexión desde el cliente al servidor utilizando ping
alumno@alumno-VirtualBox:~$ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.834 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.639 ms
64 bytes from 192.168.100.1: icmp_seq=3 ttl=64 time=0.632 ms
64 bytes from 192.168.100.1: icmp_seq=4 ttl=64 time=0.799 ms
^C
--- 192.168.100.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3029ms
rtt min/avg/max/mdev = 0.632/0.726/0.834/0.091 ms
COmprobamos que tenemos conexión ssh con el servidor. Cambiar profesor por el usuario de la máquina Ubuntu Server.
alumno@alumno-VirtualBox:~$ ssh profesor@192.168.100.1
profesor@192.168.100.1's password:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-81-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Oct 4 21:07:22 UTC 2021
System load: 0.0 Processes: 111
Usage of /: 31.1% of 18.57GB Users logged in: 1
Memory usage: 55% IPv4 address for enp0s3: 192.168.0.162
Swap usage: 0% IPv4 address for enp0s8: 192.168.100.1
55 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable
Last login: Mon Oct 4 20:40:59 2021
profesor@srv-bastionado:~$ pwd
/home/profesor
profesor@srv-bastionado:~$
Si tenemos conexión mediante ssh con el servidor, ya no hará falta utilizar el terminal del servidor. Desde el cliente podremos realizar todas las tareas. Por ejemplo (conectados por ssh) podemos ver el contenido del fichero my.cnf
profesor@srv-bastionado:~$ cat /etc/mysql/my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
Al final podemos ver las dos lineas que no están comentadas. Esto significa que realmente los ficheros de configuración son los que están incluidos. A nosotros ahora nos ocupará el segundo, que es el fichero de configuración de mysqld del servicio (demonio) de MySQL. En este fichero es donde podremos cambiar el comportamiento del servidor tal y como se ha explicado en los temas.
Podemos ver el volvado de mysql.cnf tal y como se configura por defecto al instalar con apt.
profesor@srv-bastionado:~$ sudo cat /etc/mysql/mysql.conf.d/mysqld.cnf
#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
# max_connections = 151
# table_open_cache = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file = /var/log/mysql/query.log
# general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
# server-id = 1
# log_bin = /var/log/mysql/mysql-bin.log
# binlog_expire_logs_seconds = 2592000
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
profesor@srv-bastionado:~$
Como hemos indicado al finalizar la instalación del servidor, en principio solo nos podemos conectar por la interfaz lo loopback (localhost). Lo primero que haremos es abrir el servidor para que nos podamos conctar desde otras máquinas para ello realizaremos la modificación que vemos a coninuación.
abrir el servidor al exterior
# fichero de configuración mysqld.cnf
...
bind-address = 0.0.0.0
...
Esta modificación permite conexiones al servidor por tadas las interfaces de red que tiene conectaras podemos comprobarlo con netstat, eso sí, una vez reiniciado el servidor.
profesor@srv-bastionado:~$ netstat -plnut
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 127.0.0.53:53 0.0.0.0:* -
udp 0 0 192.168.172.142:68 0.0.0.0:*
Aún así si intentamos conectar desde el cliente nos seguirá dando error, intentar pensar por qué.
alumno@alumno-VirtualBox:~$ mysql -h 192.168.100.1 -u root
ERROR 1130 (HY000): Host '192.168.100.2' is not allowed to connect to this MySQL server
instalación cliente workbench en XUbuntu 20
- Descargar de la pagina oficial workbench (paquete extensión deb)
- Abrir terminal y localizar el fichero
alumno@alumno-VirtualBox:~$ ls Descargas/
mysql-workbench-community_8.0.26-1ubuntu20.04_amd64.deb
alumno@alumno-VirtualBox:~$ cd Descargas
alumno@alumno-VirtualBox:~/Descargas$ sudo dpkg -i mysql-workbench-community_8.0.26-1ubuntu20.04_amd64.deb
en caso de error por dependencias ejecutar el comando siguiente y luego volver a desempaquetar workbench:
alumno@alumno-VirtualBox:~$ sudo --fix-broken install
Comprobar que se ha instalado

Una vez puesto en marcha tendremos la siguiente ventana:

Podemos intentar conectar con el servidor con root, pero obtendremos el mismo resultado que obtubimos con la conexión con el cliente mysql, error.
Así que de momento lo tenemos todo preparado y bien confiugurado pero aún no podemos conectar con el servidor desde fuera de localhos.