Saltar al contenido

Instalación y configuración de MySQL en Debian Linux

Etiquetas:

En este artículo veremos cómo realizar la instalación de la última versión de MySQL sobre Debian.

Tradicionalmente la instalación se hacía directamente a través de su paquete correspondiente, pero Debian ya no incluye en su repositorio MySQL, en su lugar incluye su fork MariaDB.

También veremos como personalizar la instalación y ponerla a punto para un entorno en producción.

Contenido

    Instalación

    Instalamos algunos requisitos

    apt-get install gnupg2

    Descargamos el paquete instalador del repositorio

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb

    Instalamos el paquete y se iniciará el instalador

    dpkg -i mysql-apt-config_0.8.16-1_all.deb

    Seleccionamos la versión correspondiente, en nuestro caso mysql-8.0

    Marcamos Ok para iniciar la instalación.

    Una vez actualizado nuestro repositorio con la versión de MySQL seleccionada hacemos un update del repositorio general y procedemos con la instalación del paquete mysql-server

    apt-get update

    apt-get install mysql-server

    En el proceso de instalación nos pedirá la contraseña del usuario root de MySQL

    Una vez configurada la contraseña nos muestra un aviso informativo sobre la nueva autenticación incorporada en la versión MySQL 8.

    Aceptamos y elegimos qué autenticación utilizar. En nuestro caso seleccionaremos el método nuevo. Más adelante veremos cómo habilitar la autenticación Legacy a determinados usuarios.

    Comprobamos que se ha instalado la versión seleccionada correctamente

    mysqladmin -u root -p version

    Securización

    Disponemos de la siguiente herramienta para securizar nuestra instalación. Facilita elementos de seguridad como la política de contraseñas, conexiones anónimas, login remoto de root, etc.

    mysql_secure_installation

    Acceso remoto

    Por defecto, sólo se permite la conexión al servidor de MySQL desde el host local. Si queremos permitir las conexión desde otros host, debemos seguir los siguiente pasos:

    Permitir las conexiones remotas

    Modificamos el fichero de configuración y añadimos la siguiente entrada

    vim /etc/mysql/mysql.conf.d/mysqld.conf

    bind-address = 0.0.0.0

    Al poner la dirección 0.0.0.0 permitimos todas las conexiones remotas.

    Reiniciamos el servicio mysql para aplicar los cambios

    service mysql restart

    Crear un usuario con permiso de conexión remota

    Accedemos a la consola de mysql y creamos el usuario

    mysql -u root -p

    CREATE USER 'usuario'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%';
    
    FLUSH PRIVILEGES;
    

    El carácter ‘%’ significa que se permite la conexión desde cualquier host remoto. Podríamos acotarlo especificando el nombre del host o la ip.

    Autenticación legacy

    Algunas aplicaciones aún exigen la autenticación legacy. Podemos configurar que un usuario concreto utilice el sistema autenticación legacy aplicando la modificación.

    mysql -u root -p

    ALTER USER 'usuario'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
    
    FLUSH PRIVILEGES;
    

    Parámetros y variables

    Es común tener que modificar algunos parámetros de configuración para adaptarlo a nuestras necesidades. Como ejemplo vamos a ver uno de los más comunes, el parámetro de conexiones máximas. Vamos a ver cómo consultar y modificarlo.

    Nos conectamos a la consoloa de mysql y ejecutamos las siguientes sentencias:

    mysql –u root –p

    SHOW STATUS LIKE '%connections';
    SHOW VARIABLES LIKE '%connections';

    Podemos modificar los parámetros de forma online, aunque temporal, con la siguiente sentencia:

    SET GLOBAL max_connections = 512;
    flush hosts;

    Estas modificaciones se pierden y se restauran a los valores por defecto cuando se reinicia la base de datos.

    Si queremos cambiar los parámetros de forma permanente debemos modificar el siguiente fichero de configuración y añadir el siguiente parámetro en la sección indicada:

    vim /etc/mysql/mysql.conf.d/mysqld.cnf

    [mysqld]
    max_connections = 512

    Reiniciamos el servicio para aplicar los cambios

    service mysql restart

    Carpeta de datos

    Es una buena práctica que los archivos de base de datos estén en una unidad independiente del sistema operativo. A continuación, vamos a ver un sencillo proceso de cómo mover estos archivos a una nueva unidad.

    La ruta donde se almacenan los archivos de base de datos es «/var/lib/mysql«

    Paramos el servicio mysql

    service mysql stop

    Renombramos la carpeta original /var/lib/mysql

    mv /var/lib/mysql /var/lib/mysql.backup

    Creamos una nueva carpeta con el nombre original y montamos la nueva unidad

    mkdir /var/lib/mysql

    mount /dev/sdb /var/lib/mysql

    Confirmamos que el montaje es correcto

    df -h /dev/sdb

    Copiamos los datos

    cp -R /var/lib/mysql.backup/* /var/lib/mysql/

    Cambiamos los permisos de la carpeta

    chown -R mysql:mysql /var/lib/mysql

    Arrancamos el servicio mysql

    service mysql start

    Finalmente configuramos el archivos fstab para que la nueva unidad se monte automáticamente

    vim /etc/fstab

    /dev/sdb /var/lib/mysql ext4 errors=remount-ro 0 1

    Ahora ya tenemos nuestros archivos de bases de datos en una unidad independiente.

    Backup/Restore

    Backup

    mysqldump -u root -p database > /mnt/backup/database.sql

    Restore

    mysql -u root -p database < /mnt/backup/database.sql

    Restore sobre una base de datos limpia

    mysql -u root -p

    CREATE DATABASE database CHARACTER SET utf8 COLLATE utf8_general_ci;
    FLUSH PRIVILEGES;
    EXIT
    

    mysql -u root -p database < /mnt/backup/database.sql

    Recurso SMB para Backup

    Es común tener un recurso SMB para realizar el Backup/Restore de las bases de datos. A continuación vamos a ver cómo configurarlo

    Instalamos los requisitos

    apt-get install cifs-utils smbclient

    Creamos la carpeta de backup

    mkdir /mnt/backup

    Creamos el fichero donde se almacenarán las credenciales de red

    vim /etc/cifspasswd

    username=usuario
    password=contraseña
    domain=dominio

    Editamos el archivo fstab para que el recurso se monte automáticamente

    vim /etc/fstab

    //NAS/Backup      /mnt/backup             cifs    uid=500,credentials=/etc/cifspasswd,iocharset=utf8,vers=1.0,sec=ntlm,file_mode=0770,dir_mode=0770   0 0

    Ajustaremos lo parámetros del montaje según nuestras necesidades.