install-mysql-ubuntu-22
Comment installer MySQL sur Ubuntu 22.04
Introdcution:
MySQL est un système de gestion de base de données open-source, généralement installé dans le cadre de la célèbre pile LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Il met en œuvre le modèle relationnel et utilise le langage de requête structuré (mieux connu sous le nom de SQL) pour gérer ses données.
Ce tutoriel explique comment installer MySQL version 8.0 sur un serveur Ubuntu 22.04. Une fois ce tutoriel terminé, vous disposerez d'une base de données relationnelle fonctionnelle que vous pourrez utiliser pour créer votre prochain site Web ou votre prochaine application.
Prérequis
- Un serveur Ubuntu 22.04 avec un utilisateur administratif non root et un pare-feu configuré avec UFW.
Installation de MySQL
Sous Ubuntu 22, vous pouvez installer MySQL à l'aide du référentiel de paquets APT. la version de MySQL disponible dans le référentiel Ubuntu par défaut est la version 8.0.28.
- Mise à jour des packages
sudo apt update
- Ensuite, installez le package mysql-server :
sudo apt install mysql-server
- Assurez-vous que le serveur est en cours d'exécution à l'aide de la commande systemctl start :
sudo systemctl start mysql.service
Ces commandes installeront et démarreront MySQL, mais ne vous demanderont pas de définir un mot de passe ni d'effectuer d'autres modifications de configuration. Comme cela rend votre installation de MySQL non sécurisée, nous aborderons ce point ci-après.
Configuration de MySQL
Pour les nouvelles installations de MySQL, vous devrez exécuter le script de sécurité inclus dans le système de gestion de base de données. Ce script modifie certaines des options par défaut les moins sécurisées, comme l’interdiction des connexions root à distance et la suppression des exemples d’utilisateurs.
sudo mysql
Exécutez ensuite la commande ALTER USER suivante pour modifier la méthode d’authentification de l’utilisateur root en une méthode utilisant un mot de passe. L’exemple suivant modifie la méthode d’authentification en mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
exit
Exécutez le script de sécurité avec sudo :
sudo mysql_secure_installation
Cela vous amènera à une série d'invites où vous pourrez modifier les options de sécurité de votre installation MySQL. La première invite vous demandera si vous souhaitez configurer le plugin Validate Password, qui peut être utilisé pour tester la force du mot de passe des nouveaux utilisateurs de MySQL avant de les considérer comme valides.
Si vous choisissez de configurer le plug-in Validate Password, tout utilisateur MySQL que vous créez et qui s'authentifie avec un mot de passe devra disposer d'un mot de passe qui satisfait la politique que vous sélectionnez :
Output
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:
2
Que vous choisissiez ou non de configurer le plug-in Validate Password, l'invite suivante vous demandera de définir un mot de passe pour l'utilisateur root de MySQL. Saisissez puis confirmez un mot de passe sécurisé de votre choix :
Output
Please set the password for root here.
New password:
Re-enter new password:
Notez que même si vous avez défini un mot de passe pour l’utilisateur root MySQL, cet utilisateur n’est actuellement pas configuré pour s’authentifier avec un mot de passe lors de la connexion au shell MySQL.
Le script vous demandera ensuite si vous voulez continuer avec le mot de passe que vous venez de saisir ou si vous voulez en saisir un nouveau. Si vous êtes satisfait de la force du mot de passe que vous venez de saisir, entrez Y pour poursuivre le script :
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
À partir de là, vous pouvez appuyer sur Y puis sur ENTER pour accepter les valeurs par défaut pour toutes les questions suivantes. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions root à distance et chargera ces nouvelles règles de sorte que MySQL respecte immédiatement les changements que vous avez effectués.
[Remarque] : une fois le script de sécurité terminé, vous pouvez rouvrir MySQL et rétablir la méthode d’authentification de l’utilisateur root par défaut, auth_socket. Pour vous authentifier en tant qu’utilisateur root MySQL à l’aide d’un mot de passe, exécutez cette commande :
mysql -u root -p
Revenez ensuite à la méthode d’authentification par défaut à l’aide de cette commande :
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
Cela signifie que vous pouvez à nouveau vous connecter à MySQL en tant qu'utilisateur root en utilisant la commande sudo mysql.
Création d'un utilisateur MySQL dédié et octroi de privilèges
Lors de l'installation, MySQL crée un compte utilisateur root que vous pouvez utiliser pour gérer votre base de données. Cet utilisateur dispose de tous les privilèges sur le serveur MySQL, ce qui signifie qu'il a un contrôle total sur chaque base de données, table, utilisateur, etc. Pour cette raison, il est préférable d'éviter d'utiliser ce compte en dehors des fonctions administratives. Cette étape explique comment utiliser l'utilisateur MySQL root pour créer un nouveau compte utilisateur et lui accorder des privilèges.
sudo mysql
Note : Si vous avez installé MySQL avec un autre tutoriel et activé l'authentification par mot de passe pour root, vous devrez utiliser une commande différente pour accéder à l'interpréteur de commandes MySQL. La commande suivante exécutera votre client MySQL avec les privilèges d'un utilisateur normal, et vous n'obtiendrez les privilèges d'administrateur dans la base de données qu'en vous authentifiant :
mysql -u root -p
Une fois que vous avez accès à l'invite MySQL, vous pouvez créer un nouvel utilisateur avec une instruction CREATE USER. Celles-ci suivent cette syntaxe générale :
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
[détails] Après CREATE USER, vous indiquez un nom d'utilisateur. Celui-ci est immédiatement suivi du signe @ et du nom d'hôte à partir duquel cet utilisateur se connectera. Si vous ne prévoyez d'accéder à cet utilisateur que localement à partir de votre serveur Ubuntu, vous pouvez spécifier localhost. Il n'est pas toujours nécessaire de mettre le nom d'utilisateur et l'hôte entre guillemets simples, mais cela permet d'éviter les erreurs.
Exécutez la commande suivante pour créer un utilisateur qui s'authentifie avec caching_sha2_password. Assurez-vous de remplacer sammy par votre nom d'utilisateur préféré et par un mot de passe fort de votre choix :
CREATE USER 'yann'@'localhost' IDENTIFIED BY 'password';
[Note] : Il existe un problème connu avec certaines versions de PHP qui cause des problèmes avec caching_sha2_password. Si vous prévoyez d'utiliser cette base de données avec une application PHP - phpMyAdmin, par exemple - vous voudrez peut-être créer un utilisateur qui s'authentifiera avec l'ancien plugin mysql_native_password, bien que toujours sécurisé :
CREATE USER 'yann'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Si vous n’êtes pas sûr, vous pouvez toujours créer un utilisateur qui s’authentifie avec caching_sha2_plugin, puis le MODIFIER plus tard avec cette commande :
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Après avoir créé votre nouvel utilisateur, vous pouvez lui accorder les privilèges appropriés. La syntaxe générale pour accorder des privilèges utilisateur est la suivante :
GRANT PRIVILEGE ON database.table TO 'username'@'host';
Exécutez cette instruction GRANT, en remplaçant yann par votre propre nom d’utilisateur MySQL, pour accorder ces privilèges à votre utilisateur :
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'yann'@'localhost' WITH GRANT OPTION;
Notez que cette instruction inclut également l'OPTION WITH GRANT. Cela permettra à votre utilisateur MySQL d'accorder toutes les autorisations dont il dispose à d'autres utilisateurs du système.
GRANT ALL PRIVILEGES ON *.* TO 'yann'@'localhost' WITH GRANT OPTION;
Ensuite, il est recommandé d’exécuter la commande FLUSH PRIVILEGES. Cela libère toute la mémoire que le serveur a mise en cache suite aux instructions CREATE USER et GRANT précédentes :
FLUSH PRIVILEGES;
exit
À l’avenir, pour vous connecter en tant que nouvel utilisateur MySQL, vous utiliserez une commande comme celle-ci :
mysql -u yann -p
L'indicateur -p obligera le client MySQL à vous demander le mot de passe de votre utilisateur MySQL afin de vous authentifier.
Test de MySQL
Quelle que soit la manière dont vous l'avez installé, MySQL devrait avoir démarré automatiquement. Pour le tester, vérifiez son état.
systemctl status mysql.service
Pour une vérification supplémentaire, vous pouvez essayer de vous connecter à la base de données à l'aide de l'outil mysqladmin, qui est un client permettant d'exécuter des commandes administratives. Par exemple, cette commande indique de se connecter en tant qu'utilisateur MySQL nommé yann (-u yann), de demander un mot de passe (-p) et de renvoyer la version. Veillez à remplacer yann par le nom de votre utilisateur MySQL dédié, et saisissez le mot de passe de cet utilisateur lorsque vous y êtes invité :
sudo mysqladmin -p -u yann version
Conclusion
Vous disposez désormais d'une configuration MySQL de base installée sur votre serveur.