En este artículo veremos cómo instalar MySQL Server en Debian 11 Bullseye paso a paso, de forma que puedas disfrutar fácilmente de este motor de bases de datos relacionales sobre tu servidor o VPS Debian.
Tabla de contenidos
Antes de instalar MySQL Server en Debian 11 Bullseye
Si quieres seguir los pasos de esta guía de instalación de MySQL Server en Debian 11 Bullseye sólo necesitas partir de los siguientes requerimientos mínimos:
- Una máquina Debian 11 Bullseye actualizada.
- Un usuario con privilegios de sudo.
- Acceso a Internet.
También necesitaremos algunas herramientas procedentes de los repositorios del sistema, así que los actualizamos:
~$ sudo apt update
E instalamos dichas herramientas:
~$ sudo apt install -y gnupg wget
Con todo lo necesario ya listo, asegúrate de haber regulado correctamente la altura de tu escritorio y empezamos con el trabajo.
Configuración del repositorio oficial de MySQL para Debian 11 Bullseye
Vamos a ver cómo configurar el repositorio oficial de MySQL Server para Debian 11 Bullseye ya que, debido al tipo de licencia de este software, no está incluido en los repositorios del sistema.
Visitaremos la página de descargas para APT del sitio oficial de MySQL, donde encontraremos un paquete que contiene la configuración del repositorio oficial:
Siguiendo el enlace «Download» se muestra una página que nos permitiría iniciar sesión o crear nuestra cuenta de MySQL.com, pero no es necesario, ya que la descarga se encuentra en el enlace «No thanks, just start my download«.
Si trabajamos remotamente sobre la máquina Debian 11, podemos realizar la descarga desde consola con alguna herramienta como wget:
~$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
Una vez descargado este paquete procedemos a instalarlo:
~$ sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb
Al instalarse este paquete se lanzará un pequeño configurador en modo consola que nos mostrará las características que ofrece por defecto el nuevo repositorio:
La primera opción nos muestra la versión de MySQL que se va a instalar, por defecto MySQL Server 8.4, aunque sería posible cambiarla por MySQL 8.0, MySQL Innovation y sus respectivas versiones clúster.
Por defecto, la segunda opción nos informa de que está activado el repositorio de herramientas y conectores, que es lo deseable, aunque podríamos desactivarlo.
Y, finalmente, la tercera opción ofrece un repositorio de software en pruebas, experimental, etc. que, con buen criterio, está desactivado inicialmente (aunque se puede activar).
Para salir del configurador seleccionaremos «Ok» y el instalador configurará el repositorio con los valores seleccionados.
Debemos actualizar la información de los repositorios para que se incluyan las nuevas listas de paquetes disponibles:
~$ sudo apt update
Cómo instalar MySQL Server en Debian 11 Bullseye
Llega el momento de instalar MySQL Server en Debian 11 desde el nuevo repositorio, siendo mysql-server el paquete que necesitamos:
~$ sudo apt install -y mysql-server
Una vez descargados este paquete y sus dependencias, durante la instalación de los mismos, se nos solicitará la contraseña del usuario administrador root de MySQL:
Si dejamos la contraseña en blanco se usará la autenticación por sockets de Unix, es decir, sólo el usuario root de Debian 11 o usuarios privilegiados con sudo podrán conectar como usuario root de MySQL. En cambio, si creamos una contraseña se usará el típico sistema de usuario/contraseña para acceder como root a MySQL Server. Depende de tus necesidades o gustos elegir uno u otro sistema.
Este instalador también nos advierte de la disponibilidad del nuevo plugin mejorado de autenticación, que tiene la desventaja de no ser compatible con conectores y clientes antiguos:
Si fuera necesario, se puede configurar el antiguo plugin de autenticación mysql_native_password o, algo más sencillo, crear usuarios que utilicen dicho plugin para las aplicaciones y conectores antiguos que lo requieran.
En cualquier caso, el instalador nos permite qué plugin de autenticación usar por defecto:
Terminada esta pequeña configuración inicial, la instalación termina creando un nuevo servicio en Debian 11, el servicio mysql.service o simplemente mysql, que queda en ejecución y habilitado para su inicio automático.
Podemos comprobar en cualquier momento el estado de dicho servicio con el comando systemctl:
~$ systemctl status mysql
También disponemos del cliente de consola mysql que podemos utilizar para conectar al servicio con el usuario root, si elegimos el acceso por sockets de Unix:
~$ sudo mysql
O especificando usuario y contraseña:
~$ mysql -u root -p
Al establecer conexión se mostrará la versión instalada de MySQL Server.
Cómo crear tu propio usuario administrador
Es posible que necesites un usuario administrador de MySQL Server con acceso mediante contraseña para conectar al servicio desde aplicaciones, gestores, clientes gráficos, conexiones remotas, etc. dejando al usuario root con acceso únicamente local.
Esto es fácil de hacer desde el cliente mysql, en el que creamos un usuario con contraseña:
> create user chacho identified by 'XXXXXXXX';
Y a continuación aplicamos permisos sobre todas las bases de datos y modificación de permisos de otros usuarios:
> grant all privileges on *.* to chacho with grant option;
Refrescamos la tabla de permisos:
> flush privileges;
Y cerramos la conexión:
> exit
Cómo configurar MySQL Server en Debian 11 Bullseye
A la hora de configurar MySQL Server en Debian 11 es destacable reseñar que los valores por defectos son bastante seguros, ya que no existen usuarios anónimos ni base de datos de pruebas, y el usuario root no puede acceder remotamente.
Además, el juego de caracteres por defecto que emplea el servicio es UTF8MB4, lo que ofrece total compatibilidad con idiomas como el español y otros, repletos de caracteres «especiales».
En cualquier caso, si necesitamos configurar cualquier aspecto de MySQL Server, los archivos de configuración se encuentran organizados bajo la ruta /etc/mysql/, siendo mysql.cnf el archivo principal que básicamente se encarga de incluir el resto de archivos de configuración.
Realizado cualquier cambio de configuración de MySQL Server en Debian 11, será necesario reiniciar el servicio:
~$ sudo systemctl restart mysql
Este servicio no permite simplemente volver a cargar la configuración sin necesidad de reinicio (la típica opción reload de systemctl).
Acceso remoto
Por defecto MySQL Server en Debian 11 permite conexiones entrantes desde red (acceso remoto) en las que podríamos usar nuestro usuario administrador creado en pasos anteriores.
Si tenemos activado el firewall UFW en Debian 11 será necesario añadir una regla que permita acceder a MySQL Server desde red:
~$ sudo ufw allow mysql
Para probar el acceso remoto, desde otra máquina en red usamos algún cliente, como mysql de consola, especificando la dirección del servidor Debian 11 en el que corre MySQL Server y el usuario con el que queremos conectar con contraseña:
~$ mysql -h debian11.local.lan -u chacho -p
Desactivar el acceso remoto
En muchas ocasiones no se necesita para nada la característica de acceso remoto, así que por serguridad nunca está de más desactivarla, independientemente de la configuración del firewall. Para ello editamos el archivo mysqld.cnf:
~$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Buscamos la sección mysqld:
... [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log ...
Y añadimos la directiva bind-address con el valor 127.0.01:
... [mysqld] ... bind-address = 127.0.0.1 ...
Una vez guardados los cambios será necesario reiniciar el servicio:
~$ sudo systemctl restart mysql
Desde este momento sólo se permiten conexiones TCP/IP locales al servicio.
Conclusión
Ahora que sabes cómo instalar MySQL Server en Debian 11 Bullseye ya puedes trabajar con el motor de bases de datos relacionales más famoso y usado en todo el mundo, ya sea para tus propios desarrollos o como base para aplicaciones y plataformas de terceros.
Si tienes alguna duda, pregunta, sugerencia, etc. puedes dejar un comentario (están moderados ya que recibimos mucho SPAM, pero se revisan prácticamente a diario).
¡Apóyanos!
Si gracias a esta pequeña guía de instalación y configuración ya puedes trabajar con bases de datos en tu propia máquina y quieres agradecérnoslo, cualquier pequeña contribución ayuda al mantenimiento de este sitio y la creación de más guías y tutoriales.
Puedes ayudarnos dejando una propina a partir de 1 $ desde PayPal:
¡Gracias!
Actualizado a la versión 8.4.
Actualizado a la versión 8.0.36.
Actualizado a la versión 8.0.31.
Estimado Chacho. He seguido tus pasos para instalar la última versión de MySQL en una placa SOLID-RUN HUMMINGBIRD iMX8 con esta versión de Debian y me indica que no admite arquitecturas arm64.
Por favor, ¿sabes si es posible instalar MySQL en esa placa con arquitectura iMX8 de NXP y 64 bits, es decir, un Cortex ARM A53? De ser así, ¿hay algo que instalar previamente en el sistema para que pueda después instalar el paquete de MySQL?
Muchas gracias.
Hola, Agustín. Lamentablemente MySQL no está disponible para la arquitectura ARM64 sobre Debian 11, como puedes comprobar en la ayuda del sitio oficial. Sí podrías trabajar con algún otro tipo de Linux, como CentOS.
He seguido todo el tutorial, pero no puedo conectarme remotamente. He visto ya muchos tutoriales y veo que en el archivo mysqld.cnf está todo lleno, pero el mío sólo tiene esas 4 líneas que pones acá, y no puedo conectar desde fuera. ¿Qué puedo hacer?
Hola, Marcos.
Lamentablemente no das pistas de qué es lo que está pasando en tus intentos de conexión.
Actualizado a la versión 8.0.28.
Hola, luego del «dpkg -i mysql-apt-config_0.8.19-1_all.deb» y seleccionar MySQL 8, recibo este mensaje y se aborta la instalación:
Warning: apt-key should not be used in scripts (called from postinst maintainerscript of the package mysql-apt-config)
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
¡Hola, Rafa! Lo que comentas es normal, esos mensajes aparecen siempre tras la configuración de la instalación. El comando de instalación es el que viene a continuación en el tutorial, sudo apt install -y mysql-server. En cualquier caso he aprovechado para actualizar el tutorial con la última versión de MySQL para Debian 11 Bullseye y te confirmo que funciona correctamente.
Muy didáctico, ¡el amigo va a lo que vino!, ¿por qué no agregarle la parte de seguridad?, mínimo UFW. En cuenta con el café.
Hola, simonlebribon. En este mismo sitio ya realizamos una guía de instalación del firewall, así que no es cuestión de explicar cómo hacerlo en cada tutorial en que hay que añadir alguna regla (son docenas y docenas los tutoriales de este sitio en los que se realiza algún ajuste a propósito del tema tocado).