Publicidad

Instalar y configurar MySql en clouding.io


Por Alex el 17/06/2020 ( actualizado el 28/06/2020 ) , Comentar el artículo

Comparte este artículo:        




Vamos a instalar y poner en funcionamiento paso a paso un servidor MySql en el proveedor de servidores clouding.io, creando usuarios, copias de seguridad, accesos remotos al servidor y viendo algunas opciones de configuración.


Si no conocéis clouding.io os invito a visitar su web y también leer el artículo, clouding.io, servidores cloud VPS a medida que escribí hace un tiempo donde resumo cómo trabajar con sus servidores VPS.

El escenario que vamos a utilizar para instalar MySql Server es un Ubuntu 18.04 con 1 VCores, 2 GB de ram y 10 GB SSD.

Instalación de MySql


La instalación del servidor de base de datos es muy sencilla y rápida ejecutando la siguiente instrucción desde el terminal de Linux

apt install mysql-server.

Si queremos podemos buscar antes en el repositorio para saber que versiones hay disponibles con la siguiente instrucción

apt-cache search mysql-server

Y nos dará un resultado como el de la Imágen.

apt search buscar en el repositorio el servidor MySql

La versión 5.7 es la que viene por defecto con Ubuntu 18.04 y es la que instalamos.

Crear usuarios en MySql


Una vez instalado nos conectaremos al servidor ejecutando el comando MySql en el terminal y este nos da acceso a la consola de MySql, como podemos ver nos deja entrar sin password y con el usuario root.

Podemos comprobar con qué usuarios estamos con la siguiente instrucción

select current_user();

Lo primero que tenemos que hacer es cambiar el password de root para que no sea blanco y que cualquiera pueda entrar. Ejecutaremos desde el terminal las siguientes instrucciones para cambiar el password de root


# Cambiamos a la base de datos de msyql
use mysql

# Actualizamos el sistema de autentificación del usuario root  a mysql_native_password
update user set plugin='mysql_native_password' where user='root';

# Actualizamos el passowrd 
update user set authentication_string=PASSWORD("mysql") where User='root';

flush privileges;


Cambiar el password al usuario root en MySql

NOTA: en la versión 8 probablemente esta instrucción update user set authentication_string=PASSWORD("mysql") where User='root'; no os funcione y tengais que utilizar los siguiente:

update user set authentication_string="" where User='root';

flush privileges;
Salir de la consola de mysql y ejecutar desde consola el comando

mysqladmin -u root -p password mysql

mysql es el nuevo password.

Ahora cada vez que nos conectemos lo haremos con usuario y password con esta instrucción

mysql -u root -p

y nos pedirá el password.

Actualizado el usuario root para que cualquiera no pueda entrar vamos a crear un usuario para conectarnos y no tener que utilizar el usuario root

Desde el terminal de MySql creamos un nuevo usuario, userdev escribiendo las siguientes instrucciones

# seleccionamos la base de datos del sistema
use mysql;

# creamos un usuario llamado userdev con el password mysql
 CREATE USER 'userdev'@'localhost' IDENTIFIED BY 'mysql';

# Al usuario recién creado le damos permisos a todas las bases de datos (*.*) 
GRANT ALL PRIVILEGES ON  *.* TO 'userdev'@'localhost' with grant option;

#Actualizamos
flush privileges;


Crear un usuario en MySql

Ahora ya podemos salir y entrar con el nuevo usuario

mysql -u userdev -p

y el password que le hemos dado (mysql)

Este usuario solo puede conectarse desde el propio servidor. Con 'userdev'@'localhost' le estamos diciendo que solo se conecte desde localhost (más adelante crearemos un usuario para conectarnos remotamente).

Configuración de MySql


Los ficheros de configuración se encuentran en la ruta /etc/mysql y el principal fichero es /etc/mysql/mysql.conf.d/mysqld.cnf, si lo abrís con un editor de texto como nano o el vim veréis que tiene una serie de parámetros de configuración. Importantes:

  • port = 3306, el puerto donde escucha el servidor de MySql.
  • datadir = /var/lib/mysql, la ruta donde están las bases de datos. Podemos cambiar la ruta y mover el directorio mysql a otro disco y hasta cambiarle el nombre si después en datadir ponemos la ruta completa.
  • bind-address = 127.0.0.1, IP por la que escucha el MySql, en este caso solo admite conexiones desde la propia máquina y no nos podremos conectar desde el exterior.
    Para conectarnos remotamente tendremos que comentar esta linea o poner la IP 0.0.0.0
  • log_error = /var/log/mysql/error.log, donde se guardan los errores
Hay más parámetros de configuración que podéis ir mirando con tranquilidad

En el directorio de configuración también encontrareis el fichero debian.cnf que tiene una información similar a esta

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = OZuehVfccwZKGm7e
socket = /var/run/mysqld/mysqld.sock

Aquí encontrareis el usuario debian-sys-maint y el password que servirá para entrar en la consola de MySql si algún día perdéis el password de root.

Cambiar el password de root en MySql

Conectarse a MySql


Hasta ahora nos conectamos al MySql desde el servidor pero también podemos conectarnos remotamente o a través de un interface web con phpMyAdmin.

Para conectarse remotamente tenemos que realizar varias acciones:

  • Instalar el cliente de MySql en local, en nuestro ordenador con la siguiente instrucción en Linux

    sudo apt install mysql-client

    Y una vez instalado el cliente nos conectamos al servidor poniendo la ip del servidor

    mysql -u userdev -p -h 18.23.15.12

    También podemos instalar el cliente de MySql para Windows, mysql-workbench.
  • Ahora tenemos que comentar en el fichero de configuración la línea bind-address = 127.0.0.1, cada vez que hagamos cambios en el fichero de configuración tenemos que reiniciar el servicio

    service mysql restart

  • En el siguiente paso creamos un nuevo usuario que nos permita acceder desde fuera del servidor y lo haremos con las siguientes instrucciones
    
    CREATE USER 'userdev'@'%' IDENTIFIED BY 'mysql';
    GRANT ALL PRIVILEGES ON  *.* TO 'userdev'@'%' with grant option;
    FLUSH PRIVILEGES;
    

  • Por último falta abrir el puerto del MySql desde el panel de clouding.io, vamos a la opción Mis Firewalls

    Crear reglas de firewall en clouding.io para MySql

    Y pulsamos el signo + para añadir una nueva regla al firewall.

    Crear reglas de firewall en clouding.io para MySql

    Seleccionamos la plantilla que queremos utilizar, en nuestro caso “Permitir MySql” y pulsamos el signo + para que nos muestre los datos de la plantilla.

    Crear reglas de firewall en clouding.io para MySql

    Lo dejamos todo por defecto y pulsamos enviar para crear la regla. Si la buscáis en el listado os tiene que salir algo como la imágen

    Crear reglas de firewall en clouding.io para MySql

Y ya podemos conectar remotamente.

Ahora vamos a instalar phpMyAdmin para no tener que ir abriendo puertos y poder tener el MySql limitado solo a la ip de nuestro servidor. Necesitaremos instalar en el servidor Apache2 y php y lo haremos desde el terminal con la siguiente instrucción

apt install apache2 php php-mysql

Nos bajamos la última versión de phpMyAdmin al servidor y lo instalamos en /var/www/html, así que desde esta ruta ejecutamos el siguiente comando para bajarnos el phpMyAdmin

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip

Lo descomprimimos

unzip phpMyAdmin-5.0.2-all-languages.zip

Si no tenemos el unzip lo instalamos

apt install unzip

Le cambiamos el nombre al directorio resultante para que nos sea más fácil utilizarlo

mv phpMyAdmin-5.0.2-all-languages phpmyadmin

Ahora en el navegador escribimos la ruta del administrador, si no os acordáis de la IP en el panel de control de clouding.io la podéis encontrar o ejecutando el comando ifconfig desde el terminal. Sabiendo la IP creamos la url de nuestro phpmyadmin ( 1.1.1.1 es un ejemplo).

http://1.1.1.1/phpmyadmin/

Con el usuario que hemos creado anteriormente userdev podremos acceder al entorno del MySql.

Copias de seguridad y restaurar copias


Supongamos que tenemos una base de datos llamada pruebas y queremos realizar copias de seguridad cada día, podemos crear un cron que ejecute un script que vaya realizando dichas copias.

Las copias de seguridad en MySql las realizamos con la siguiente instrucción desde el terminal

mysqldump -u userdev -p pruebas > pruebas.sql

Donde:

  • -u userdev es el usuario que hemos creado antes.
  • -p para que nos pida el password.
  • pruebas es la base de datos que queremos copiar.
  • Con el signo de mayor le decimos que el resultado lo vuelque a un fichero llamado pruebas.sql.
Ahora vamos a crear un script para ponerlo en un cron.

Creamos un script llamando backups_mysql.sh y dentro escribimos los siguiente código

date=`date +%Y-%m-%d_%Hh`
mysqldump -u userdev -pmysql pruebas > /root/${date}_pruebas.sql

guardamos el script y le damos permisos de ejecución

chmod 700 backups_mysql.sh

Ahora lo ponemos para que se ejecute cada dia a las 00:30 de la noche. Para esto abrimos el crontab desde el terminal ejecutando

crontab -e

Y ponemos la siguiente línea

30 0 * * * sh /root/backups/backup_mysql.sh > /tmp/backup_mysql.log

Vamos a crear un segundo script para ir eliminado backups cada x dias porque sino acabaremos llenado el disco. Creamos un script llamado delete_backups.sh y ponemos esto dentro

find /root/backups/ -mindepth 1 -mtime +6 -delete

Este comando eliminará todos los ficheros del directorio backups que sea más antiguo a 6 días.

El cron quedaría de la siguiente forma

Programando crons para realizar backups del MySql

Para restaurar un backup de los que hemos creado podemos hacerlo con la siguiente instrucción

mysql -u userdev -p pruebas01 < pruebas.sql

pruebas01 es una nueva base de datos que hemos creado con el administrador de MySql phpMyAdmin.

Por último quiero comentaros una opción muy interesante que he visto en clouding.io y es la posibilidad de crear redes privadas siempre que tengamos dos o más servidores y con ello poder securizar el servidor de MySql en un red privada.

Esta opción hay que habilitar desde el panel de control

Configurar una red privada en clouding.io

y nos asignan una IP privada del tipo 10.x.x.x

Configurar una red privada en clouding.io

Esta IP la podemos usar para acceder al MySql y así poder separar el MySql de servidor web en dos servidores. Y hasta aquí la instalación, configuración y puesta en marcha del servidor MySql en Ubuntu Server. Espero que os haya gustado y sobre todo servido de ayuda y no dejéis de probar los servidores clouding.io donde he realizado estas pruebas.

Y esto es todo, y feliz programming
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.