Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment installer MySQL 8 sur Ubuntu 20.04 LTS

MySQL fait partie des systèmes de bases de données relationnelles populaires utilisés comme stockage de données de sites Web et d'applications Web. Ce tutoriel fournit toutes les étapes nécessaires pour installer MySQL 8 sur Ubuntu 20.04 LTS. Les étapes doivent être les mêmes sur les autres versions des systèmes Ubuntu et Linux. Vous pouvez également suivre Comment installer MySQL 8 sur Ubuntu 18.04 LTS. Vous pourriez également être intéressé par d'autres didacticiels spécifiques à MySQL, notamment Comment installer MySQL 8 sur Windows et Apprendre les requêtes SQL de base à l'aide de MySQL.

Prérequis

Ce didacticiel suppose que vous avez déjà installé la version de bureau ou de serveur Ubuntu 20.04 LTS pour une utilisation locale ou de production. Vous pouvez suivre Installer le bureau Ubuntu 20.04 LTS, Installer Ubuntu 20.04 LTS sur Windows à l'aide de VMware et Lancer le serveur Ubuntu 20.04 LTS sur Amazon EC2 pour installer Ubuntu 20.04 LTS. Cela suppose également que vous disposez des privilèges root ou d'un utilisateur normal avec des privilèges sudo.

Installer MySQL

Cette section fournit les commandes nécessaires pour installer MySQL Database Server version 8 sur Ubuntu 20.04 LTS.

# Installer MySQL Server 8
sudo apt install mysql-server

# Résultat
Lecture des listes de packages... Terminé
Création de l'arborescence des dépendances
Lecture des informations d'état... Terminé
Les packages supplémentaires suivants seront installés :
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
---
---
Configuration de mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
update-alternatives :utilisation de /etc/mysql/mysql.cnf pour fournir /etc/mysql/my.cnf (my.cnf) en mode automatique
Renommer les options key_buffer et myisam-recover supprimées (si elles sont présentes) /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Configuration de mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Traitement des déclencheurs pour systemd (245.4-4ubuntu3) ...
Traitement des déclencheurs pour man-db (2.9.1-1) ...
Traitement des déclencheurs pour libc-bin ( 2.31-0ubuntu9) ...

J'ai mis en évidence les packages MySQL qui sont installés après l'exécution de la commande d'installation. Il installe les packages du noyau, du serveur et du client MySQL. De plus, la version 8.0.20 du serveur MySQL a été installée lors de la rédaction de ce didacticiel.

Configurer et sécuriser l'installation de MySQL

Il faut également configurer et sécuriser l'installation à l'aide de la commande mysql_secure_installation comme indiqué ci-dessous. Il vous demandera de définir le mot de passe root et quelques questions de sécurité.

Étape 1 - Installation sécurisée - Exécutez la commande pour démarrer la configuration MySQL.

# MySQL sécurisé
sudo mysql_secure_installation

Étape 2 - Validateur de mot de passe - Il demande de confirmer l'utilisation du validateur de mot de passe pour valider le mot de passe. Il affichera également la force du mot de passe lors de la fourniture du mot de passe.

# Composant du validateur de mot de passe
Appuyez sur y|Y pour Oui, sur n'importe quelle autre touche pour Non :y

Si nous sélectionnons Non, il ne vérifiera pas la force du mot de passe de la racine MySQL et des autres utilisateurs lors de leur ajout. Nous devrions utiliser un mot de passe fort pour les utilisateurs MySQL, il est donc recommandé d'utiliser le composant Password Validator.

Étape 3 - Niveau de validation du mot de passe - La commande d'installation sécurisée demande le niveau de validation du mot de passe et propose des options parmi Low(0), Medium(1) et Strong(2). Il est recommandé d'utiliser au moins niveau moyen d'avoir un mot de passe fort pour tous les utilisateurs de MySQL. Les règles de validation de tous les niveaux sont listées ci-dessous.

Faible - Il attend un mot de passe d'au moins 8 caractères sans aucune restriction sur les caractères.

Moyen - Le niveau moyen attend un mot de passe qui comporte au moins 8 caractères et autorise les caractères numériques, majuscules, minuscules et spéciaux.

Fort - Le niveau fort attend un mot de passe d'au moins 8 caractères et autorise les caractères numériques, majuscules, minuscules et spéciaux. Il permet également le fichier dictionnaire.

#Niveau de validation du mot de passe
Veuillez saisir 0 =FAIBLE, 1 =MOYEN et 2 =FORT :1

Étape 4 - Mot de passe racine - Le plugin d'authentification par défaut utilisé par MySQL pour l'utilisateur root est auth_socket .

# Invite de mot de passe
Nouveau mot de passe :
Saisir à nouveau le nouveau mot de passe :

Si vous avez choisi d'utiliser Password Validator, il affichera également la force du mot de passe root et confirmera l'utilisation du mot de passe donné, comme indiqué ci-dessous.

# Confirm Password
Force estimée du mot de passe :80
Souhaitez-vous continuer avec le mot de passe fourni ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y

Si nous choisissons Non, il demandera à nouveau le mot de passe.

Étape 5 - Supprimer les utilisateurs anonymes - Après avoir fourni le mot de passe, le processus d'installation sécurisée demande de supprimer les utilisateurs anonymes. MySQL ajoute un utilisateur anonyme lors de son installation à des fins de test et permet à quiconque de se connecter sans mot de passe. Il est recommandé de supprimer l'utilisateur anonyme.

Supprimer les utilisateurs anonymes ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y 

Étape 6 - Interdire la connexion à distance - Le processus d'installation sécurisée demande également de confirmer si la connexion à distance est autorisée pour l'utilisateur root. Nous devrions choisir l'option y pour restreindre l'utilisateur root à l'hôte local. Nous pouvons toujours ajouter des utilisateurs supplémentaires pour autoriser la connexion à distance si nécessaire.

Interdire la connexion root à distance ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y 

Étape 7 - Supprimer la base de données de test - MySQL crée la base de données de test lors de son installation. Vous pouvez conserver la base de données de test à des fins d'analyse et la supprimer ultérieurement.

Supprimer la base de données de test et y accéder ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y 

Étape 8 - Recharger les tableaux de privilèges - Enfin, l'installation sécurisée demande de recharger les tables de privilèges pour appliquer immédiatement les modifications.

Recharger les tables de privilèges maintenant ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y 

Les étapes complètes que j'ai suivies lors d'une nouvelle installation de MySQL sont indiquées ci-dessous.

# Secure MySQL
sudo mysql_secure_installation

# Configuration
Sécurisation du déploiement du serveur MySQL.

Connexion à MySQL avec un mot de passe vide.

VALIDATE PASSWORD COMPONENT peut être utilisé pour tester les mots de passe
et améliorer la sécurité. Il vérifie la force du mot de passe
et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Souhaitez-vous configurer le composant VALIDATE PASSWORD ?

Appuyez sur y|Y pour Oui, sur n'importe quelle autre touche pour Non :y

Il existe trois niveaux de politique de validation des mots de passe :

Longueur BASSE>=8
Longueur MOYENNE>=8, chiffres, casse mixte et caractères spéciaux
FORT Longueur>=8, numérique, casse mixte, caractères spéciaux et fichier dictionnaire

Veuillez saisir 0 =FAIBLE, 1 =MOYEN et 2 =FORT :1
Veuillez définir le mot de passe pour root ici.

Nouveau mot de passe :

Saisir à nouveau le nouveau mot de passe :

Force estimée du mot de passe :50
Souhaitez-vous continuer avec le mot de passe fourni ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y
Par défaut, une installation MySQL a un utilisateur anonyme,
permettant à quiconque de se connecter à MySQL sans avoir
à créer un compte utilisateur. Ceci est uniquement destiné à des
tests et à rendre l'installation un peu plus fluide.
Vous devez les supprimer avant de passer à un environnement de
production.

Supprimer les utilisateurs anonymes ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y
Succès.


Normalement, root ne devrait être autorisé à se connecter qu'à partir de
'localhost'. Cela garantit que personne ne peut deviner
le mot de passe root à partir du réseau.

Interdire la connexion root à distance ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y
Succès.

Par défaut, MySQL est fourni avec une base de données nommée "test" à laquelle
n'importe qui peut accéder. Ceci est également destiné uniquement aux tests,
et doit être supprimé avant de passer à un environnement de
production.


Supprimer la base de données de test et y accéder ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y
- Suppression de la base de données de test...
Succès.

- Suppression des privilèges sur la base de données de test...
Succès.

Rechargement de la les tables de privilèges garantiront que toutes les
modifications apportées jusqu'à présent prendront effet immédiatement.

Recharger les tables de privilèges maintenant ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :y
Succès.

C'est fait !

Les étapes ci-dessus suppriment la base de données de test et les utilisateurs anonymes. Il interdit également la connexion à distance pour s'assurer que le serveur est accessible localement soit en utilisant 127.0.0.1 ou localhost .

Vérifier l'installation

Nous pouvons vérifier l'installation du serveur MySQL en utilisant la commande comme indiqué ci-dessous pour vérifier si le serveur MySQL est en cours d'exécution.

# Vérifier l'état de MySQL
systemctl status mysql

# Résultat mysql.service - Serveur de communauté MySQL chargé :chargé (/lib/systemd/system/mysql.service ; activé ; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le ven. 2020-06-05 19:42:35 IST ; Il y a 9min PID principal :63433 (mysqld) Statut :"Le serveur est opérationnel" Tâches :40 (limite :4624) Mémoire :319,2 Mo CGroup :/system.slice/mysql.service └─63433 /usr/sbin/mysqldJun 05 19 :42:35 bravo systemd[1] :Démarrage du serveur de communauté MySQL... 5 juin 19:42:35 bravo systemd[1] :Démarrage du serveur de communauté MySQL.

Vérifiez également la version du serveur que nous avons installée et assurez-vous que le serveur est accessible à l'aide du mot de passe root que nous avons configuré.

# Vérifier la version
sudo mysql --version

# Sortie
mysql Ver 8.0.20-0ubuntu0.20.04.1 pour Linux sur x86_64 ((Ubuntu))

# Connexion
sudo mysql
# OU
sudo mysql -u root

# Quitter la base de données
exit

Nous pouvons simplement nous connecter à MySQL comme indiqué ci-dessus, même si nous avons fourni le mot de passe de l'utilisateur root lors de la sécurisation du serveur MySQL. MySQL autorise directement l'utilisateur root car il utilise le auth_socket plugin pour l'utilisateur root qui n'a pas besoin de mot de passe.

Plug-in de mot de passe utilisateur racine

Nous pouvons changer le plugin de mot de passe de l'utilisateur root à caching_sha2_password (préféré) ou mysql_native_password pour permettre aux autres applications, y compris phpMyAdmin, de se connecter au serveur MySQL en utilisant l'utilisateur root. Cela peut être fait en utilisant les commandes comme indiqué ci-dessous.

# Connexion à MySQL
sudo mysql

# Vérifier le schéma de mot de passe de l'utilisateur root
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Notez le plugin de mot de passe de l'utilisateur root
+------------------------------+--------------- -------------------------------------------------- -------+----------------------+-----------+
| utilisateur | chaîne_authentification | plugin | hôte |
+------------------+------------------------ ------------------------------------------------+- ----------------------+-----------+
| debian-sys-maint | $A$005$[DA
NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | caching_sha2_password | hôte local |
| mysql.infoschema | $A$005$CECIESTUNECOMBINAISOND'UNALTETDEMOT DE PASSE VALIDES QUI NE DOIVENT JAMAIS ÊTRE UTILISÉS | caching_sha2_password | hôte local |
| mysql.session | $A$005$CECIESTUNECOMBINAISOND'UNALTETDEMOT DE PASSE VALIDES QUI NE DOIVENT JAMAIS ÊTRE UTILISÉS | caching_sha2_password | hôte local |
| mysql.sys | $A$005$CECIESTUNECOMBINAISOND'UNALTETDEMOT DE PASSE VALIDES QUI NE DOIVENT JAMAIS ÊTRE UTILISÉS | caching_sha2_password | hôte local |
| racine | | auth_socket | hôte local |
+------------------+------------------------ ------------------------------------------------+- ----------------------+-----------+

# Passer à nouveau et recommandé plugin de mot de passe - caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIÉ AVEC caching_sha2_password BY '' ;

# Appliquer les modifications
vider les privilèges ;

# Vérifier le schéma de mot de passe de l'utilisateur root
SELECT user,authentication_string,plugin ,host FROM mysql.user;

# Notez le plugin de mot de passe de l'utilisateur root
+------------------+--- ----------------------------------------+--------- --------------+-----------+
| utilisateur | chaîne_authentification | plugin | hôte |
+------------------+------------------------ -------------------+-----------------------+------ -----+
| racine | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
+------------------+----- -------------------------------------------+----------- ------------+-----------+

# Changer le plugin de mot de passe de l'utilisateur root en mysql_native_password - non recommandé
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '' ;

# Appliquer les modifications
vider les privilèges ;

# Vérifier le schéma de mot de passe de l'utilisateur root
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Notez le plugin de mot de passe de l'utilisateur root
+------ ------------+-------------------------------------------------- ------+-----------------------+-----------+
| utilisateur | chaîne_authentification | plugin | hôte |
+------------------+------------------------ -------------------+-----------------------+------ -----+
| racine | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | hôte local |
+------------------+------------------------ -------------------+-----------------------+------ -----+

# Quitter la base de données
exit

Utilisateurs supplémentaires

Nous pouvons ajouter des utilisateurs supplémentaires à l'aide de la commande CREATE USER comme indiqué ci-dessous.

# Connexion à MySQL - auth_socket
sudo mysql

# OU - Connexion à MySQL - caching_sha2_password
sudo mysql -u root -p

# Ajouter un utilisateur
CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '' ;

# Appliquer les modifications
vider les privilèges ;

# Quitter la base de données
exit

Vous pouvez également suivre Apprendre les requêtes SQL de base à l'aide de MySQL pour apprendre les requêtes SQL de base.

Commandes importantes

Cette section présente certaines des commandes importantes pour démarrer, arrêter et redémarrer le serveur.

# Vérifier l'état du serveur
sudo service mysql status

# Arrêter le serveur
sudo service mysql stop

# Démarrer le serveur
sudo service mysql start

# Redémarrer le serveur
sudo service mysql restart
 

Résumé

Ce tutoriel a fourni toutes les étapes nécessaires pour installer la version la plus récente du serveur MySQL, c'est-à-dire MySQL 8 sur Ubuntu 20.04 LTS. Il a également fourni les étapes de configuration pour sécuriser davantage l'installation du serveur MySQL.

Après avoir terminé l'installation, vous pouvez également suivre Apprendre les requêtes SQL de base à l'aide de MySQL, Guide de conception de base de données pour la gestion de blogs dans MySQL et Guide de conception de base de données pour le panier d'achat en ligne dans MySQL.