sql >> Base de Datos >  >> RDS >> Mysql

Cómo instalar MySQL 8 en Ubuntu 20.04 LTS

MySQL se encuentra entre los sistemas de bases de datos relacionales populares utilizados como almacenamiento de datos de sitios web y aplicaciones web. Este tutorial proporciona todos los pasos necesarios para instalar MySQL 8 en Ubuntu 20.04 LTS. Los pasos deben ser los mismos en otras versiones de los sistemas Ubuntu y Linux. También puede seguir Cómo instalar MySQL 8 en Ubuntu 18.04 LTS. También puede estar interesado en otros tutoriales específicos de MySQL, incluidos Cómo instalar MySQL 8 en Windows y Aprender consultas SQL básicas usando MySQL.

Requisitos

Este tutorial asume que ya instaló la versión de escritorio o servidor de Ubuntu 20.04 LTS, ya sea para uso local o de producción. Puede seguir Instalar Ubuntu 20.04 LTS Desktop, Instalar Ubuntu 20.04 LTS en Windows usando VMware y Activar Ubuntu 20.04 LTS Server en Amazon EC2 para instalar Ubuntu 20.04 LTS. También asume que tiene privilegios de root o un usuario normal con privilegios sudo.

Instalar MySQL

Esta sección proporciona los comandos necesarios para instalar MySQL Database Server versión 8 en Ubuntu 20.04 LTS.

# Install MySQL Server 8
sudo apt install mysql-server

# Output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0
---
---
Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Renaming removed key_buffer and myisam-recover options (if present)
mysqld will log errors to /var/log/mysql/error.log
mysqld is running as pid 63195
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Setting up mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...

He resaltado los paquetes de MySQL que se instalan después de ejecutar el comando de instalación. Instala los paquetes de núcleo, servidor y cliente de MySQL. Además, se instaló la versión 8.0.20 del servidor MySQL mientras se escribía este tutorial.

Configurar y asegurar la instalación de MySQL

También debemos configurar y asegurar la instalación usando el comando mysql_secure_installation Como se muestra abajo. Le pedirá que configure la contraseña de root y algunas preguntas de seguridad.

Paso 1 - Instalación segura - Ejecute el comando para iniciar la configuración de MySQL.

# Secure MySQL
sudo mysql_secure_installation

Paso 2 - Validador de contraseña - Pide confirmar el uso del validador de contraseña para validar la contraseña. También mostrará la seguridad de la contraseña al proporcionar la contraseña.

# Password Validator Component
Press y|Y for Yes, any other key for No: y

Si seleccionamos No, no verificará la seguridad de la contraseña de la raíz de MySQL y otros usuarios mientras los agrega. Deberíamos usar una contraseña segura para los usuarios de MySQL, por lo que se recomienda usar el Componente Validador de Contraseña.

Paso 3 - Nivel de validación de contraseña - El comando de instalación segura solicita el nivel de validación de la contraseña y brinda opciones para elegir entre Bajo (0), Medio (1) y Fuerte (2). Se recomienda usar al menos Nivel Medio tener una contraseña segura para todos los usuarios de MySQL. Las reglas de validación de todos los niveles se enumeran a continuación.

Bajo - Espera una contraseña de al menos 8 caracteres sin ninguna restricción de caracteres.

Medio - El Nivel Medio espera una contraseña que tenga al menos 8 caracteres y permita caracteres numéricos, mayúsculas, minúsculas y especiales.

Fuerte - El nivel fuerte espera una contraseña que tenga al menos 8 caracteres y permita caracteres numéricos, mayúsculas, minúsculas y especiales. También permite el archivo de diccionario.

# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Paso 4 - Contraseña raíz - El complemento de autenticación predeterminado utilizado por MySQL para el usuario raíz es auth_socket .

# Password Prompt
New password:<password>
Re-enter new password:<repeat password>

En caso de que haya seleccionado usar el Validador de contraseña, también mostrará la seguridad de la contraseña raíz y confirmará el uso de la contraseña dada como se muestra a continuación.

# Confirm Password
Estimated strength of the password: 80
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Si optamos por No, volverá a solicitar la contraseña.

Paso 5 - Eliminar usuarios anónimos - Después de proporcionar la contraseña, el proceso de instalación segura solicita eliminar a los usuarios anónimos. MySQL agrega un usuario anónimo durante la instalación con fines de prueba y permite que cualquier persona inicie sesión sin una contraseña. Se recomienda eliminar el usuario anónimo.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Paso 6 - No permitir inicio de sesión remoto - El proceso de instalación segura también solicita confirmar si se permite el inicio de sesión remoto para el usuario root. Deberíamos elegir la opción y para restringir el usuario raíz al host local. Siempre podemos agregar usuarios adicionales para permitir el inicio de sesión remoto cuando sea necesario.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Paso 7 - Eliminar base de datos de prueba - MySQL crea la base de datos de prueba mientras la instala. Puede conservar la base de datos de prueba con fines de análisis y luego eliminarla.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Paso 8 - Recargar tablas de privilegios - Por último, la instalación segura solicita recargar las tablas de privilegios para aplicar los cambios inmediatamente.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Los pasos completos que seguí en una instalación nueva de MySQL se muestran a continuación.

# Secure MySQL
sudo mysql_secure_installation

# Configuration
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Los pasos anteriores eliminan la base de datos de prueba y los usuarios anónimos. También no permite el inicio de sesión remoto para garantizar que se pueda acceder localmente al servidor usando 127.0.0.1 o localhost .

Verificar instalación

Podemos verificar la instalación del servidor MySQL usando el comando que se muestra a continuación para verificar si el servidor MySQL se está ejecutando.

# Check MySQL Status
systemctl status mysql

# Output mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 19:42:35 IST; 9min ago Main PID: 63433 (mysqld) Status: "Server is operational" Tasks: 40 (limit: 4624) Memory: 319.2M CGroup: /system.slice/mysql.service └─63433 /usr/sbin/mysqld Jun 05 19:42:35 bravo systemd[1]: Starting MySQL Community Server... Jun 05 19:42:35 bravo systemd[1]: Started MySQL Community Server.

Además, verifique la versión del servidor que instalamos y asegúrese de que se pueda acceder al servidor utilizando la contraseña raíz configurada por nosotros.

# Check version
sudo mysql --version

# Output
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

# Login
sudo mysql
# OR
sudo mysql -u root

# Quit Database
exit

Simplemente podemos iniciar sesión en MySQL como se muestra arriba, incluso si hemos proporcionado la contraseña del usuario raíz mientras aseguramos el servidor MySQL. MySQL permite directamente al usuario root ya que usa el auth_socket complemento para el usuario root que no necesita ninguna contraseña.

Complemento de contraseña de usuario raíz

Podemos cambiar el complemento de contraseña del usuario root a caching_sha2_password (preferido) o mysql_native_password para permitir que las otras aplicaciones, incluido phpMyAdmin, inicien sesión en el servidor MySQL utilizando el usuario raíz. Se puede hacer usando los comandos que se muestran a continuación.

# Login to MySQL
sudo mysql

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$[DA
NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | 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 |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

# Change to new and recommended password plugin - caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Change password plugin of root user to mysql_native_password - not recommended
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Quit Database
exit

Usuarios adicionales

Podemos agregar usuarios adicionales usando el comando CREAR USUARIO como se muestra a continuación.

# Login to MySQL - auth_socket
sudo mysql

# OR - Login to MySQL - caching_sha2_password
sudo mysql -u root -p

# Add User
CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Quit Database
exit

También puede seguir Aprenda consultas SQL básicas usando MySQL para aprender consultas SQL básicas.

Comandos importantes

Esta sección muestra algunos de los comandos importantes para iniciar, detener y reiniciar el servidor.

# Check server status
sudo service mysql status

# Stop server
sudo service mysql stop

# Start server
sudo service mysql start

# Restart server
sudo service mysql restart
 

Resumen

Este tutorial proporcionó todos los pasos necesarios para instalar la versión más reciente del servidor MySQL, es decir, MySQL 8 en Ubuntu 20.04 LTS. También proporcionó los pasos de configuración para asegurar aún más la instalación del servidor MySQL.

Después de completar la instalación, también puede seguir Aprenda consultas SQL básicas usando MySQL, Guía para diseñar bases de datos para administración de blogs en MySQL y Guía para diseñar bases de datos para carrito de compras en línea en MySQL.