Instalar un servidor MySQL 8.0 desde el paquete binario
Aprendemos en esta entrada a instalar un servidor MySQL 8.0 desde el paquete binario en un servidor Debian 11. Esto nos permitirá tener más facilidades en su configuración, sin necesidad de compilar desde las fuentes. Entre otras cosas nos permite setear un servidor MySQL en una localización personalizada y con opciones y parámetros custom. Aunque he utilizado Debian, esta entrada también serviría para distribuciones derivadas, como Ubuntu o Linux Mint.
Cabe decir que la idea de esta entrada ha surgido de la necesidad y de acordarme que en su día el amigo Linuxito, ya había hablado de esto en su ya desaparecida web. Por lo que he utilizado Internet Archive para recuperar su artículo, que he utilizado como fuente. Al césar lo que es del césar.
Para esta entrada he utilizado un VPS creado en mi proveedor de confianza Clouding.io
Instalar un servidor MySQL 8.0 desde el paquete binario
Lo primero que tenemos que hacer es descargar y extraer el paquete binario:
cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar tar xvf mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar tar axf mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz rm *tar.xz mv mysql-8.0.28-linux-glibc2.17-x86_64-minimal/ .. cd .. ln -s mysql-8.0.28-linux-glibc2.17-x86_64-minimal/ mysql
Instalamos dependencias de MySQL y verificamos que no quedan binarios con librerías faltantes:
apt install libncurses5 libtinfo5 libnuma1 ldd mysql/bin/* | grep 'not found' echo $? 1
Ahora toca una parte muy importante, que es crear el usuario «mysql», con el que trabajar este motor de base de datos
Para ello hemos de seguir estos pasos:
groupadd mysql useradd -r -g mysql -s /bin/false mysql
Creamos los directorios «mysql-files» y el datadir:
cd /usr/local/mysql mkdir {mysql-files,data} chown mysql:mysql mysql-files chmod 750 mysql-files chown mysql:mysql data chmod 750 data
Instalamos y personalizamos los scripts de inicio:
cp support-files/mysql.server /etc/init.d/mysql8 vim /etc/init.d/mysql8
Yo he utilizado vim, pero aquí podemos utilizar nuestro editor favorito.
Definimos el directorio base, el datadir y el archivo de configuración «my.cnf»:
basedir=/usr/local/mysql datadir=/usr/local/mysql/data mycnf=$basedir/etc/my.cnf
Además, en la línea 208 cambiamos:
conf=/etc/my.cnf
Por:
conf=$mycnf
Guardamos y salimos.
A continuación, creamos el fichero «my.cnf»
mkdir -p /usr/local/mysql/etc vim /usr/local/mysql/etc/my.cnf
Indicamos la siguiente configuración con datadir, socket, archivo de PID, archivo de log de errores y puerto personalizado:
[mysqld] basedir = /usr/local/mysql pid-file = /var/run/mysqld/mysqld8.pid socket = /var/run/mysqld/mysqld8.sock datadir = /usr/local/mysql/data log-error = /usr/local/mysql/error.log bind-address = 0.0.0.0 port = 3307 symbolic-links = 0
Creamos el archivo de log de errores vacío:
touch /usr/local/mysql/error.log chown mysql:mysql /usr/local/mysql/error.log
Creamos el directorio para el pid:
mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld
Iniciamos el datadir e inciamos el servicio por primera vez:
/usr/local/mysql/bin/mysqld \ --initialize --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data cd /usr/local/mysql bin/mysqld_safe –-user=mysql &
Si todo ha ido bien, deberíamos ver algo similar a esto:
En el fichero «error.log» se encuentra la clave de root temporal generada al ejecutar «–initialize»
La apuntamos, y ahora reiniciamos el servicio utilizando el script ubicado en «/etc/init.d»
/etc/init.d/mysql8 restart
Nos conectamos por primera vez:
cd /usr/local/mysql/bin ./mysql -u root -P 3307 -h 127.0.0.1 -p
Para muestra un botón:
Cambiamos el password de root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'contrasea'; flush privileges; exit
Con esto ya lo tendríamos.
Como es un engorro ir hasta el directorio del binario para llamar al comando mysql, creamos un enlace simbólico para que lo podamos llamar desde cualquier parte:
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/
Espero que esta entrada os pueda ser de ayuda en algún momento.
Durante todos estos años hemos hablado largo y tendido sobre MySQL, podéis consultar todas las entradas aquí.
Fuentes consultadas: