Cómo instalar MySQL en Ubuntu 22.04

Introducción

MySQL es un sistema de gestión de bases de datos de código abierto, que se suele instalar como parte de la popular pila LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Implementa el modelo relacional y utiliza el lenguaje de consulta estructurado (más conocido como SQL) para gestionar sus datos.

En este tutorial, se explicará cómo instalar la versión 8.0 de MySQL en un servidor Ubuntu 22.04. Al completarlo, tendrá una base de datos relacional funcional que podrá utilizar para crear su próximo sitio web o aplicación.

Implemente una base de datos MySQL con un solo clic mediante las bases de datos administradas de DigitalOcean . Deje que DigitalOcean se concentre en el escalamiento, el mantenimiento y las actualizaciones de su base de datos.

Prerrequisitos

Para seguir este tutorial, necesitarás:

  • Un servidor Ubuntu 22.04 con un usuario administrativo que no sea root y un firewall configurado con UFW. Para configurarlo, siga nuestra guía de configuración inicial de servidores para Ubuntu 22.04 .

Paso 1: Instalación de MySQL

En Ubuntu 22.04, puedes instalar MySQL mediante el repositorio de paquetes APT. Al momento de escribir este artículo, la versión de MySQL disponible en el repositorio predeterminado de Ubuntu es la versión 8.0.28.

Para instalarlo, actualice el índice de paquetes en su servidor si no lo ha hecho recientemente:

  1. sudo apt update

Luego instala el mysql-serverpaquete:

  1. sudo apt install mysql-server

Asegúrese de que el servidor esté ejecutándose mediante el systemctl startcomando:

  1. sudo systemctl start mysql.service

Estos comandos instalarán e iniciarán MySQL, pero no le solicitarán que establezca una contraseña ni que realice ningún otro cambio de configuración. Como esto hace que la instalación de MySQL sea insegura, abordaremos este tema a continuación.

Paso 2: Configuración de MySQL

Para instalaciones nuevas de MySQL, deberá ejecutar el script de seguridad incluido en el sistema de administración de bases de datos. Este script cambia algunas de las opciones predeterminadas menos seguras para cuestiones como no permitir inicios de sesión remotos como root y eliminar usuarios de muestra.

Advertencia : a partir de julio de 2022, se producirá un error cuando ejecute el mysql_secure_installationscript sin ninguna configuración adicional. El motivo es que este script intentará establecer una contraseña para la cuenta MySQL raíz de la instalación , pero, de forma predeterminada en las instalaciones de Ubuntu, esta cuenta no está configurada para conectarse mediante una contraseña.

Antes de julio de 2022, este script fallaba silenciosamente después de intentar configurar la contraseña de la cuenta raíz y continuaba con el resto de las indicaciones. Sin embargo, al momento de escribir este artículo, el script devolverá el siguiente error después de ingresar y confirmar una contraseña:

Output ... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.New password:

Esto llevará al script a un bucle recursivo del que solo podrás salir cerrando la ventana de tu terminal.

Dado que el mysql_secure_installationscript realiza una serie de otras acciones que son útiles para mantener segura la instalación de MySQL, se recomienda ejecutarlo antes de comenzar a usar MySQL para administrar los datos. Sin embargo, para evitar entrar en este bucle recursivo, primero deberá ajustar la forma en que se autentica el usuario root de MySQL.

Primero, abra el indicador de MySQL:

  1. sudo mysql

A continuación, ejecute el siguiente ALTER USERcomando para cambiar el método de autenticación del usuario raízmysql_native_password por uno que utilice una contraseña. El siguiente ejemplo cambia el método de autenticación a :

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Después de realizar este cambio, salga del indicador de MySQL:

  1. exit

Después de esto, puedes ejecutar el mysql_secure_installationscript sin problemas.

Ejecute el script de seguridad con sudo:

  1. sudo mysql_secure_installation

Esto lo llevará a través de una serie de indicaciones donde puede realizar algunos cambios en las opciones de seguridad de su instalación MySQL. La primera indicación le preguntará si desea configurar el complemento Validar contraseña, que se puede utilizar para probar la solidez de las contraseñas de los nuevos usuarios MySQL antes de considerarlas válidas.

Si elige configurar el complemento Validar contraseña, cualquier usuario de MySQL que cree que se autentique con una contraseña deberá tener una contraseña que cumpla con la política que seleccione:

OutputSecuring the MySQL server deployment.Connecting to MySQL using a blank password.VALIDATE PASSWORD COMPONENT can be used to test passwordsand improve security. It checks the strength of passwordand allows the users to set only those passwords which aresecure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: YThere are three levels of password validation policy:LOW    Length = 8MEDIUM Length = 8, numeric, mixed case, and special charactersSTRONG Length = 8, numeric, mixed case, special characters and dictionary                  filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Independientemente de si elige configurar el complemento Validar contraseña, el siguiente mensaje le pedirá que configure una contraseña para el usuario root de MySQL . Ingrese y luego confirme una contraseña segura de su elección:

OutputPlease set the password for root here.New password:Re-enter new password:

Tenga en cuenta que aunque haya establecido una contraseña para el usuario raíz de MySQL, este usuario no está configurado actualmente para autenticarse con una contraseña al conectarse al shell de MySQL.

Si utilizó el complemento Validar contraseña, recibirá información sobre la solidez de su nueva contraseña. Luego, el script le preguntará si desea continuar con la contraseña que acaba de ingresar o si desea ingresar una nueva. Suponiendo que esté satisfecho con la solidez de la contraseña que acaba de ingresar, presione Enter Ypara continuar con el script:

OutputEstimated strength of the password: 100Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Desde allí, puede presionar Yy luego ENTERaceptar los valores predeterminados para todas las preguntas posteriores. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, deshabilitará los inicios de sesión remotos como root y cargará estas nuevas reglas para que MySQL respete de inmediato los cambios que haya realizado.

Nota: Una vez que se complete el script de seguridad, puede volver a abrir MySQL y cambiar el método de autenticación del usuario raíz al predeterminado. auth_socketPara autenticarse como usuario raíz de MySQL con una contraseña, ejecute este comando:

  1. mysql -u root -p

Luego vuelva a utilizar el método de autenticación predeterminado usando este comando:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

Esto significará que podrás volver a conectarte a MySQL como tu usuario rootsudo mysql usando el comando.

Una vez que se complete el script, su instalación de MySQL estará protegida. Ahora puede continuar con la creación de un usuario de base de datos dedicado con el cliente MySQL.

Paso 3: creación de un usuario MySQL dedicado y concesión de privilegios

Tras la instalación, MySQL crea una cuenta de usuario raíz que puede utilizar para administrar su base de datos. Este usuario tiene privilegios completos sobre el servidor MySQL, lo que significa que tiene control total sobre cada base de datos, tabla, usuario, etc. Por este motivo, es mejor evitar utilizar esta cuenta fuera de las funciones administrativas. Este paso describe cómo utilizar el usuario raíz de MySQL para crear una nueva cuenta de usuario y otorgarle privilegios.

En los sistemas Ubuntu que ejecutan MySQL 5.7 (y versiones posteriores), el usuario root de MySQL está configurado para autenticarse mediante el auth_socketcomplemento de forma predeterminada en lugar de con una contraseña. Este complemento requiere que el nombre del usuario del sistema operativo que invoca al cliente MySQL coincida con el nombre del usuario MySQL especificado en el comando, por lo que debe invocar mysqlcon sudoprivilegios para obtener acceso al usuario root de MySQL:

  1. sudo mysql

Nota: Si instaló MySQL con otro tutorial y habilitó la autenticación con contraseña para root , deberá usar un comando diferente para acceder al shell MySQL. Lo siguiente ejecutará su cliente MySQL con privilegios de usuario normales y solo obtendrá privilegios de administrador dentro de la base de datos mediante la autenticación:

  1. mysql -u root -p

Una vez que tenga acceso al indicador de MySQL, puede crear un nuevo usuario con una CREATE USERdeclaración. Estas siguen esta sintaxis general:

  1. CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

Después de CREATE USER, especifica un nombre de usuario. A esto le sigue inmediatamente un @signo y luego el nombre de host desde el que se conectará este usuario. Si solo planea acceder a este usuario localmente desde su servidor Ubuntu, puede especificar localhost. No siempre es necesario poner el nombre de usuario y el host entre comillas simples, pero hacerlo puede ayudar a evitar errores.

Tiene varias opciones a la hora de elegir el complemento de autenticación de sus usuarios. El auth_socketcomplemento mencionado anteriormente puede resultar práctico, ya que proporciona una seguridad sólida sin exigir a los usuarios válidos que introduzcan una contraseña para acceder a la base de datos. Pero también evita las conexiones remotas, lo que puede complicar las cosas cuando los programas externos necesitan interactuar con MySQL.

Como alternativa, puede omitir por completo la parte de la sintaxis para que el usuario se autentique con el complemento predeterminado de MySQL, . La documentación de MySQL recomienda este complemento para los usuarios que desean iniciar sesión con una contraseña debido a sus sólidas funciones de seguridad.WITH authentication_plugincaching_sha2_password

Ejecute el siguiente comando para crear un usuario que se autentique con caching_sha2_password. Asegúrese de cambiarlo sammypor su nombre de usuario preferido y passwordpor una contraseña segura de su elección:

  1. CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Nota : Existe un problema conocido con algunas versiones de PHP que causa problemas con caching_sha2_password. Si planea usar esta base de datos con una aplicación PHP (phpMyAdmin, por ejemplo), es posible que desee crear un usuario que se autentique con el mysql_native_passwordcomplemento anterior, aunque aún seguro:

  1. CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Si no está seguro, siempre puede crear un usuario que se autentique con caching_sha2_pluginy luego ALTERhacerlo más tarde con este comando:

  1. ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Después de crear un nuevo usuario, puede otorgarle los privilegios correspondientes. La sintaxis general para otorgar privilegios de usuario es la siguiente:

  1. GRANT PRIVILEGE ON database.table TO 'username'@'host';

El PRIVILEGEvalor de esta sintaxis de ejemplo define qué acciones puede realizar el usuario en los valores especificados databasey table. Puede otorgar varios privilegios al mismo usuario en un comando separándolos con una coma. También puede otorgar privilegios a un usuario de forma global introduciendo asteriscos ( *) en lugar de los nombres de las bases de datos y las tablas. En SQL, los asteriscos son caracteres especiales que se utilizan para representar “todas” las bases de datos o tablas.

Para ilustrarlo, el siguiente comando otorga a un usuario privilegios globales para CREATE, ALTER, y DROPbases de datos, tablas y usuarios, así como el poder para INSERT, UPDATEy DELETEdatos de cualquier tabla en el servidor. También otorga al usuario la capacidad de consultar datos con SELECT, crear claves externas con la REFERENCESpalabra clave y realizar FLUSHoperaciones con el RELOADprivilegio . Sin embargo, solo debe otorgar a los usuarios los permisos que necesitan, así que siéntase libre de ajustar los privilegios de sus propios usuarios según sea necesario.

Puede encontrar la lista completa de privilegios disponibles en la documentación oficial de MySQL .

Ejecute esta GRANTdeclaración, reemplazándola sammycon su propio nombre de usuario MySQL, para otorgar estos privilegios a su usuario:

  1. GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Tenga en cuenta que esta declaración también incluye WITH GRANT OPTION. Esto permitirá que su usuario MySQL otorgue los permisos que tenga a otros usuarios del sistema.

Advertencia : algunos usuarios pueden querer otorgar a su usuario MySQL el ALL PRIVILEGESprivilegio que les proporcionará amplios privilegios de superusuario similares a los privilegios del usuario root , de la siguiente manera:

  1. GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

No se deben conceder privilegios tan amplios a la ligera , ya que cualquiera con acceso a este usuario MySQL tendrá control total sobre todas las bases de datos del servidor.

A continuación, se recomienda ejecutar el FLUSH PRIVILEGEScomando. Esto liberará la memoria que el servidor haya almacenado en caché como resultado de las instrucciones CREATE USERy anteriores GRANT:

  1. FLUSH PRIVILEGES;

Luego puedes salir del cliente MySQL:

  1. exit

En el futuro, para iniciar sesión como su nuevo usuario MySQL, deberá utilizar un comando como el siguiente:

  1. mysql -u sammy -p

La -pbandera hará que el cliente MySQL le solicite la contraseña de su usuario MySQL para poder autenticarse.

Por último, probemos la instalación de MySQL.

Paso 4: Prueba de MySQL

Independientemente de cómo lo hayas instalado, MySQL debería haber comenzado a ejecutarse automáticamente. Para comprobarlo, comprueba su estado.

  1. systemctl status mysql.service

La salida será similar a la siguiente:

Output● mysql.service - MySQL Community Server     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)     Active: active (running) since Mon 2022-04-11 16:04:39 UTC; 2h 36min ago    Process: 2593 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)   Main PID: 2601 (mysqld)     Status: "Server is operational"      Tasks: 38 (limit: 1119)     Memory: 354.3M        CPU: 19.944s     CGroup: /system.slice/mysql.service             └─2601 /usr/sbin/mysqld

Si MySQL no se está ejecutando, puedes iniciarlo con sudo systemctl start mysql.

Para una comprobación adicional, puede intentar conectarse a la base de datos mediante la mysqladminherramienta, que es un cliente que le permite ejecutar comandos administrativos. Por ejemplo, este comando indica que debe conectarse como un usuario MySQL llamado sammy ( ), solicitar una contraseña ( ) y devolver la versión. Asegúrese de cambiar al nombre de su usuario MySQL dedicado e ingrese la contraseña de ese usuario cuando se le solicite:-u sammy-psammy

  1. sudo mysqladmin -p -u sammy version

A continuación se muestra un ejemplo del resultado:

Outputmysqladmin  Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Server version          8.0.28-0ubuntu4Protocol version        10Connection              Localhost via UNIX socketUNIX socket             /var/run/mysqld/mysqld.sockUptime:                 2 hours 31 min 57 secThreads: 2  Questions: 25  Slow queries: 0  Opens: 160  Flush tables: 3  Open tables: 79  Queries per second avg: 0.000

Esto significa que MySQL está en funcionamiento.

Conclusión

Ahora tiene una configuración básica de MySQL instalada en su servidor. A continuación, se muestran algunos ejemplos de los pasos que puede seguir:

  • Configurar una pila LAMP o una pila LEMP
  • Practica la ejecución de consultas con SQL
  • Administra tu instalación de MySQL con phpMyAdmin
SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio