Instalación de MySQL


MySQL es un sistema de administración de bases de datos de código abierto. Implementa el modelo relacional y utiliza el Structured Query Language (más conocido como SQL) para administrar los datos.



Instalar MySQL

Para realizar la instalación es recomendable que actualice el índice de paquetes en su servidor si no lo ha hecho recientemente.

  • sudo apt update

Luego instalamos el servidor mysql

  • sudo apt install mysql-server

Configurar MySQL

Podemos realizar la configuración de seguridad para la validación de la contraseña del usuario root ejecutando el siguiente comando

  • sudo mysql_secure_installation

Al ejecutar el comando nos da una serie de pasos a seguir para la configuración de seguridad. Luego de realizar esta configuración, debemos realizar una más para así poder conectarnos a MySQL con nuestro usuario root ya que por defecto viene con una configuración auth_socket que proporciona aun más seguridad que una contraseña, pero nos puede generar complicaciones para la conexión de aplicaciones externas.

Puede cambiar el método auth_socket por otros como, caching_sha2_password o mysql_native_password. Para hacer esto, vamos a nuestra terminal y ejecutamos:

  • sudo mysql

A continuación, compruebe con el siguiente comando el método de autenticación utilizado por una de sus cuentas de usuario de MySQL:

  • SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

En este ejemplo, puede ver que, en efecto, el usuario root se autentica utilizando el complemento de auth_socket. Para configurar la cuenta root para autenticar con una contraseña, ejecute una instrucción ALTER USER para cambiar qué complemento de autenticación utiliza y establecer una nueva contraseña.

Nota: La instrucción ALTER USER previa establecer el root user de MySQL para autenticar con el complemento caching_sha2_passwordSegún la documentación oficial de MySQLcaching_sha2_password es el complemento de autenticación preferido por MySQL, ya que proporciona un cifrado de contraseña más seguro que el anterior, aunque aún usado ampliamente mysql_native_password.

Para este caso usaremos el método mysql_native_password. Asegúrate de cambiar 'password' por una contraseña segura y la cual tu recuerdes. 

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

A continuación, ejecute FLUSH PRIVILEGES para indicar al servidor que vuelva a cargar la tabla de permisos y aplique sus nuevos cambios:

  • FLUSH PRIVILEGES;

Compruebe de nuevo los métodos de autenticación empleados por cada uno de sus usuarios para confirmar que root deje de realizarla usando el complemento de auth_socket:

  • SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F                              | mysql_navite_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

Podemos ver que el usuario root de MySQL ahora autentica usando mysql_native_password. Una vez que confirme esto en su propio servidor, podrá cerrar el shell de MySQL:

  • exit

Nota: Si tiene la autenticación por contraseña habilitada para root, como se ha descrito anteriormente, deberá usar un comando diferente para acceder al shell de MySQL. A través de lo siguiente, se ejecutará su cliente de MySQL con privilegios de usuario regulares y solo obtendrá privilegios de administrador dentro de la base de datos mediante la autenticación:

  • mysql -u root -p

A partir de ahí, cree un usuario nuevo y asigne una contraseña segura:

  • CREATE USER 'techskull'@'localhost' IDENTIFIED BY 'password';

Luego, conceda a su nuevo usuario los privilegios apropiados.

Tenga en cuenta que en este momento no necesita ejecutar el comando FLUSH PRIVILEGES de nuevo. Este comando solo es necesario cuando modifica las tablas de concesión usando instrucciones como INSERTUPDATE o DELETE. Debido a que creó un nuevo usuario, en vez de modificar uno existente, FLUSH PRIVILEGES no es necesario aquí.

Después de esto, cierre el shell de MySQL:

  • exit
Finalmente para verificar el funcionamiento ejecutamos
  • systemctl status mysql.service

Visualizará un resultado similar al siguiente:

Output
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago Main PID: 10382 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 1137) Memory: 370.0M CGroup: /system.slice/mysql.service └─10382 /usr/sbin/mysqld

En caso de que MySQL no se encuentre activa puede hacerlo con el siguiente comando:

  • systemctl start mysql.service

Como comprobación adicional, puede intentar establecer conexión con la base de datos usando la herramienta mysqladmin, que es un cliente que le permite ejecutar comandos administrativos. Por ejemplo, este comando dice conectar a MySQL como root (-u root), solicitud de contraseña (-p), y devolver la versión.

  • sudo mysqladmin -p -u root version

Veremos en pantalla algo similar a esto:


mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.19-0ubuntu5 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 10 min 44 sec Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

Con esto confirmamos que MySQL esta funcionando correctamente.

Comentarios

Populares

La revolución de la Inteligencia Artificial y su impacto en los trabajos tecnológicos

Apache Tomcat

Medellin será la sede para el evento de VC Week 2025 en Colombia

La Informática

Las TIc