Saltar al contenido

Cómo instalar MySQL en Ubuntu 18.04

marzo 4, 2020

 

Una versión anterior de este tutorial fue escrito por Hazel Virdó

Introducción

MySQL es un sistema de gestión de bases de datos de código abierto, comúnmente instalado como parte de la lámpara populares (Linux, Apache, MySQL, PHP / Python / Perl) apilar. Utiliza una base de datos relacional y SQL (Structured Query Language) para gestionar sus datos.

La versión corta de la instalación es simple: actualizar el índice de paquetes, instalar el paquete mysql-servidor, y luego ejecutar el script de seguridad incluido.

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

  • sudo apt update sudo apt
  • instalar mysql-server
  • sudo mysql_secure_installation

Este tutorial se explica cómo instalar MySQL versión 5.7 en un servidor de Ubuntu 18.04. Sin embargo, si usted está buscando para actualizar una instalación existente de MySQL a la versión 5.7, se puede leer esta guía MySQL 5.7 actualización en su lugar.

Requisitos previos

Para seguir este tutorial, necesitará:

  • Una Ubuntu 18.04 servidor configurado siguiendo esta guía de configuración inicial del servidor, incluyendo un usuario no root con privilegios sudo y un firewall.

Paso 1 – Instalación de MySQL

En Ubuntu 18.04, sólo la última versión de MySQL está incluido en el repositorio de paquetes APT por defecto. En el momento de la escritura, que es MySQL 5.7

Para instalarlo, actualizar el índice de paquetes en el servidor con apt:

sudo apt update

  • sudo update apt

E instala el paquete por defecto:

sudo apt install mysql-server

  • sudo apt instalar mysql- servidor

Esto instalará MySQL, pero no le pedirá que establezca una contraseña o realizar cualquier otro cambio de configuración. Debido a que este sale de su instalación de MySQL inseguro, nos referiremos a este lado.

Paso 2 – Configuración de MySQL

Para instalaciones nuevas, tendrá que ejecutar el script de seguridad incluido. Esto cambia algunas de las opciones predeterminadas menos seguros para cosas como las conexiones de root remotos y usuarios de ejemplo. En las versiones anteriores de MySQL, lo necesario para inicializar el directorio de datos de forma manual, así, pero esto se hace automáticamente ahora.

Ejecutar la secuencia de comandos de seguridad:

sudo mysql_secure_installation

  • sudo mysql_secure_installation

Esto le llevará a través de una serie de indicaciones donde se pueden hacer algunos cambios en las opciones de seguridad de la instalación de MySQL. El primer mensaje le preguntará si desea configurar la contraseña Validar Plugin, que puede ser utilizado para probar la fuerza de su contraseña de MySQL. Independientemente de su elección, el siguiente indicador será establecer una contraseña para el usuario root de MySQL . Introduzca y confirme una contraseña segura de su elección.

A partir de ahí, puede pulsar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas siguientes. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, desactivar las conexiones de root remotos, y la carga de estas nuevas reglas para que MySQL respeta inmediatamente los cambios realizados.

para inicializar el directorio de datos de MySQL, se usaría mysql_install_db para las versiones antes de 5.7.6 y 5.7.6 para mysqld –initialize y posteriores. Sin embargo, si ha instalado MySQL desde la distribución Debian, como se describe en el paso 1, el directorio de datos se inicializa automáticamente; usted no tiene que hacer nada. Si intenta ejecutar el comando de todas formas, verá el siguiente error:

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

Tenga en cuenta que a pesar de que haya establecido una contraseña para la raíz MySQL usuario, este usuario no está configurado para autenticarse con una contraseña cuando se conecta a la cáscara MySQL. Si desea, puede ajustar esta configuración siguiendo paso a paso Paso 3 3.

– (Opcional) Ajuste de autenticación de usuario y privilegios

sistemas que funcionan en Ubuntu MySQL 5.7 (y versiones posteriores), la raíz MySQL usuario es conjunto para la autenticación mediante el plugin de auth_socket por defecto en lugar de con una contraseña. Esto permite un cierto grado de seguridad mayor facilidad de uso y en muchos casos, pero también puede complicar las cosas cuando es necesario para permitir que un programa externo (por ejemplo, phpMyAdmin) para acceder el usuario.

Para utilizar una contraseña para conectarse a MySQL como root , tendrá que cambiar su método de autenticación de auth_socket a mysql_native_password. Para ello, abrir el MySQL instrucción del terminal de:

sudo mysql

  • sudo mysql

A continuación, compruebe el método de autenticación cada uno de su usuario de MySQL cuentas de su uso con el siguiente comando:

SELECT user,authentication_string,plugin,host FROM mysql.user;

  • usuario SELECT, authentication_string, plug-in , host desde mysql.user;

Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

En este ejemplo, se puede ver que la raíz usuario lo hace, de hecho, la autenticación mediante el plugin auth_socket. Para configurar la raíz cuenta para autenticarse con una contraseña, ejecute el siguiente comando ALTER USER. Asegúrese de cambiar la contraseña a una contraseña de su elección, y nota que este comando cambiará la raíz contraseña que estableció en el Paso 2:

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

  • ALTER ‘root’ @ ‘localhost’ identificado con mysql_native_password POR ‘contraseña’;

A continuación, ejecute FLUSH PRIVILEGIOS, que indica al servidor para recargar las tablas de permisos y poner los nuevos cambios en vigor:

FLUSH PRIVILEGES;

  • PRIVILEGIOS FLUSH;

Compruebe los métodos de autenticación empleados por cada uno de sus usuarios de nuevo para confirmar que la raíz de autentica ya no usando el plugin auth_socket:

SELECT user,authentication_string,plugin,host FROM mysql.user;

  • usuario SELECT, authentication_string, plugin, acogerá del mysql.user;

Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Se puede ver en este ejemplo de salida que la raíz usuario MySQL ahora autentica mediante una contraseña. Una vez que confirme esto en su propio servidor, puede salir de la cáscara de MySQL: salida

exit

Alternativamente, algunos pueden encontrar que se adapte mejor a su flujo de trabajo para conectarse a MySQL con un usuario dedicado. Para crear un usuario tal, abrir la cáscara de MySQL una vez más:

sudo mysql

  • sudo mysql

Nota: Si tiene autenticación de contraseña habilitada para raíz , tal como se describe en los párrafos anteriores, se tendrá que utilizar un comando diferente para acceder a la cáscara de MySQL. A continuación se ejecutará el cliente de MySQL con privilegios de usuario normal, y sólo va a ganar privilegios de administrador dentro de la base de datos mediante la autenticación:

mysql -u root -p

  • mysql -u root -p

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

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

  • CREATE USER ‘Sammy’ @ ‘localhost’ IDENTIFICADAS POR ‘contraseña’;

Entonces, concede su nuevo usuario los privilegios adecuados. Por ejemplo, se podría conceder los privilegios de usuario a todas las tablas dentro de la base de datos, así como la facultad de añadir, cambiar y privilegios de usuario quitar, con este comando:.

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

  • conceder a todos los privilegios sobre * * A ‘Sammy’ @ ‘localhost’ CON GRANT OPTION;

Tenga en cuenta que, en este punto, no es necesario para ejecutar el comando FLUSH PRIVILEGIOS nuevo. Este comando sólo es necesario cuando se modifican las tablas de permisos utilizando frases como INSERT, UPDATE o DELETE. Debido a que ha creado un nuevo usuario, en lugar de modificar una existente, PRIVILEGIOS color, es innecesaria aquí.

Después de esto, salir del shell de MySQL: salida

exit

Por último, vamos a probar la instalación de MySQL.

Paso 4 – Pruebas de MySQL

Independientemente de la forma en que lo ha instalado, MySQL debería haber comenzado a ejecutarse automáticamente. Para probar esto, comprobar su estado.

systemctl status mysql.service

  • systemctl estado mysql.service

Usted verá una salida similar a la siguiente:

● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
Main PID: 3754 (mysqld)
Tasks: 28
Memory: 142.3M
CPU: 1.994s
CGroup: /system.slice/mysql.service
└─3754 /usr/sbin/mysqld

si MySQL no se está ejecutando, puede iniciarlo con sudo mysql systemctl inicio.

Para una comprobación adicional, se puede intentar la conexión a la base de datos utilizando la herramienta de mysqladmin, que es un cliente que le permite ejecutar comandos administrativos. Por ejemplo, este comando le dice a conectarse a MySQL como root (u root ), petición de contraseña (-p), y devolver la versión.

sudo mysqladmin -p -u root version

  • sudo mysqladmin -u -p versión raíz

Debería ver una salida similar a la siguiente:

mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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 5.7.21-1ubuntu1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 30 min 54 sec

Threads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.006

Esto significa MySQL está en marcha.

Conclusión

Ahora tiene una configuración básica de MySQL instalado en su servidor. Aquí hay algunos ejemplos de los próximos pasos que puede tomar:

  • poner en práctica algunas medidas de seguridad adicionales
  • Reubicar el directorio de datos
  • administrar sus servidores MySQL con SaltStack