février 3, 2022

Réseau de support

Installer le serveur MySQL sur le système d’exploitation Ubuntu

Dernière mise à jour le: 2019-12-20

Auteur: Jered Heeschen

MySQL est une base de données relationnelle open source, gratuite et largement utilisée. C’est un bon choix si vous savez que vous avez besoin d’une base de données mais que vous ne connaissez pas grand-chose des options disponibles.

Cet article décrit une installation de base d’un serveur de base de données MySQL sur le système d’exploitation Ubuntu. Vous devrez peut-être installer d’autres paquets pour laisser les applications utiliser MySQL, comme les extensions pour PHP. Vérifiez votre document d’application pour plus de détails.

Installer MySQL

Installer le serveur MySQL en utilisant le gestionnaire de paquets du système d’exploitation Ubuntu:

sudo apt-get updatesudo apt-get install mysql-server

Le programme d’installation installe MySQL et toutes les dépendances.

Si l’utilitaire d’installation sécurisée ne se lance pas automatiquement une fois l’installation terminée, entrez la commande suivante:

sudo mysql_secure_installation utility

Cet utilitaire vous invite à définir le mot de passe racine mysql et d’autres options liées à la sécurité, y compris la suppression de l’accès distant à l’utilisateur root et la définition du mot de passe root.

Autoriser l’accès à distance

Si iptables est activé et que vous souhaitez vous connecter à la base de données MySQL depuis une autre machine, vous devez ouvrir un port dans le pare-feu de votre serveur (le port par défaut est 3306). Vous n’avez pas besoin de le faire si l’application qui utilise MySQLis s’exécute sur le même serveur.

Exécutez la commande suivante pour autoriser l’accès distant au serveur mysql:

sudo ufw enablesudo ufw allow mysql

Démarrez le service MySQL

Une fois l’installation terminée, vous pouvez démarrer le service de base de données en exécutant la commande suivante. Si le service est déjà démarré, un messagevous informe que le service est déjà en cours d’exécution:

sudo systemctl start mysql

Lancement au redémarrage

Pour vous assurer que le serveur de base de données se lance après un redémarrage, exécutez la commande suivante:

sudo systemctl enable mysql

Configurer les interfaces

MySQL, par défaut n’est plus lié (à l’écoute) à aucune interface accessible à distance.Modifiez la directive « bind-address » dans /etc/mysql/mysql.conf.d/mysqld.CNF:

bind-address= 127.0.0.1 ( The default. )bind-address= XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )bind-address= ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )bind-address= 0.0.0.0 ( All ip addresses. )

Redémarrez le service mysql.

sudo systemctl restart mysql

Démarrer le shell mysql

Il existe plus d’une façon de travailler avec un serveur MySQL, mais cet articlese concentre sur l’approche la plus basique et la plus compatible, le shell mysql.

  1. À l’invite de commande, exécutez la commande suivante pour lancer le shell mysql et entrez-le en tant qu’utilisateur root:

    /usr/bin/mysql -u root -p
  2. Lorsque vous êtes invité à entrer un mot de passe, entrez celui que vous avez défini àl’heure de l’installation, ou si vous n’en avez pas défini, appuyez sur Entrée pour soumettre un mot de passe.

    L’invite de shell mysql suivante devrait apparaître:

    mysql>

Définissez le mot de passe root

Si vous vous êtes connecté en entrant un mot de passe vide ou si vous souhaitez modifier le mot de passe root que vous avez défini, vous pouvez créer ou modifier le mot de passe.

  1. Pour les versions antérieures à MySQL 5.7, entrez la commande suivante dans le shell mysql, remplacez password par votre nouveau mot de passe:

    UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';

    Pour la version MySQL 5.7 et ultérieure, entrez la commande suivante dans le shell mysql, en remplaçant password par votre nouveau mot de passe:

    UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
  2. Pour que la modification prenne effet, rechargez les informations utilisateur stockées avec la commande suivante:

    FLUSH PRIVILEGES;

    Remarque : Nous utilisons des majuscules pour les commandes SQL. Si vous tapez ces commandes en minuscules, elles fonctionneront. Par convention, les commandes sont écrites en majuscules pour les distinguer des noms de champs et des autres données manipulées.

Si vous devez réinitialiser le mot de passe root plus tard, consultez Réinitialiser un mot de passe root MySQL.

Voir les utilisateurs

MySQL stocke les informations utilisateur dans sa propre base de données. Le nom de la base de donnéesest mysql. À l’intérieur de cette base de données, les informations utilisateur se trouvent dans une table, adataset, nommée user. Si vous souhaitez voir quels utilisateurs sont configurés dans la table MySQLuser, exécutez la commande suivante:

SELECT User, Host, authentication_string FROM mysql.user;

La liste suivante décrit les parties de cette commande:

  • SELECT indique à MySQL que vous demandez des données.
  • User, Host, authentication_string indique à MySQL les champs dans lesquels vous souhaitez qu’il soit enregistré. Les champs sont des catégories pour les données d’une table. Dans ce cas, vous recherchez le nom d’utilisateur, l’hôte associé au nom d’utilisateur et l’entrée de mot de passe cryptée.
  • DEPUIS mysql.user  » indique à MySQL d’obtenir les données de la mysqldatabase et de la table user.
  • Un point-virgule(;) termine la commande.

Remarque : Toutes les requêtes SQL se terminent par un point-virgule. MySQL ne traite pas une requête jusqu’à ce que vous tapiez un point-virgule.

Hôtes utilisateur

L’exemple suivant est la sortie de la requête précédente:

SELECT User, Host, authentication_string FROM mysql.user;+------------------+-----------+-------------------------------------------+| User | Host | authentication_string |+------------------+-----------+-------------------------------------------+| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 || mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |+------------------+-----------+-------------------------------------------+

Les utilisateurs sont associés à un hôte, en particulier à l’hôte à partir duquel ils se connectent.L’utilisateur root dans cet exemple est défini pour localhost, pour l’adresse IP de localhost et le nom d’hôte du serveur.Vous devez généralement définir un utilisateur pour un seul hôte, celui à partir duquel vous vous connectez automatiquement.

Si vous exécutez votre application sur le même ordinateur que le serveur MySQLserver, l’hôte auquel elle se connecte par défaut est localhost. Tous les nouveaux utilisateurs que vous créez doivent avoir localhost dans leur champ hôte.

Si votre application se connecte à distance, l’entrée hôte que MySQL recherche est l’adresse IP ou le nom d’hôte DNS de l’ordinateur distant (celui d’où provient le client).

Utilisateurs anonymes

Dans l’exemple de sortie, une entrée a une valeur d’hôte mais pas de nom d’utilisateur ou de mot de passe.C’est un utilisateur anonyme. Lorsqu’un client se connecte sans nom d’utilisateur spécifié, il essaie de se connecter en tant qu’utilisateur anonyme.

Vous ne voulez généralement pas d’utilisateurs anonymes, mais certaines installations MySQL en incluent une par défaut. Si vous en voyez un, vous devez soit supprimer l’utilisateur (reportez-vous au nom d’utilisateur avec des guillemets vides, comme  »), soit lui définir un mot de passe.

Créer une base de données

Il existe une différence entre un serveur de base de données et une base de données, même si ces termes sont souvent utilisés de manière interchangeable. MySQL est un serveur de base de données, ce qui signifie qu’il récupère les bases de données et en contrôle l’accès. La base de données stocke les données, etc’est la base de données à laquelle les applications tentent d’accéder lorsqu’elles interagissent avec MySQL.

Certaines applications créent une base de données dans le cadre de leur processus de configuration, mais d’autres vous demandent de créer une base de données vous-même et d’en informer l’application.

Pour créer une base de données, connectez-vous au shell mysql et exécutez la commande suivante, en remplaçant demodb par le nom de la base de données que vous souhaitez créer:

CREATE DATABASE demodb;

Une fois la base de données créée, vous pouvez vérifier sa création en exécutant une requête pour répertorier toutes les bases de données. L’exemple suivant montre la requête et l’exemple de sortie:

SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema || demodb || mysql |+--------------------+3 rows in set (0.00 sec)

Ajouter un utilisateur de base de données

Lorsque des applications se connectent à la base de données à l’aide de l’utilisateur root, elles ont généralement plus de privilèges qu’elles n’en ont besoin. Vous pouvez ajouter des utilisateurs que les applications peuvent utiliser pour se connecter à la nouvelle base de données. Dans l’exemple suivant, un utilisateur nommé demouser est créé.

  1. Pour créer un nouvel utilisateur, exécutez la commande suivante dans le shell mysql:

    INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject)VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
  2. Lorsque vous apportez des modifications à la table utilisateur dans la base de données mysql, dites à MySQL de lire les modifications en vidant les privilèges, comme suit:

    FLUSH PRIVILEGES;
  3. Vérifiez que l’utilisateur a été créé en exécutant à nouveau une requête SELECT:

    SELECT User, Host, authentication_string FROM mysql.user;+------------------+-----------+-------------------------------------------+| User | Host | Password |+------------------+-----------+-------------------------------------------+| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 || mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 || demouser | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 |+------------------+-----------+-------------------------------------------+

Accordez des autorisations d’utilisateur de base de données

Juste après la création d’un nouvel utilisateur, il n’a aucun privilège. L’utilisateur peut se connecter, mais ne peut pas être utilisé pour apporter des modifications à la base de données.

Résumé

Si vous créez simplement une base de données et un utilisateur, vous avez terminé. Les concepts abordés ici devraient vous donner un bon départ pour en savoir plus.

  • Configurer le serveur MySQL sur le système d’exploitation Ubuntu
  • Réinitialiser un mot de passe racine MySQL

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.