GNU/Linux >> Tutoriels Linux >  >> Linux

Installer MySQL Server sur le système d'exploitation Ubuntu

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 savez pas grand-chose sur toutes les 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 packages pour permettre aux applications d'utiliser MySQL, comme des extensions pour PHP. Consultez la documentation de votre application pour plus de détails.

Installer MySQL

Installez le serveur MySQL à l'aide du gestionnaire de packages du système d'exploitation Ubuntu :

sudo apt-get update
sudo 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, saisissez la commande suivante :

sudo mysql_secure_installation utility

Cet utilitaire vous invite à définir le mot de passe root mysql et d'autres options liées à la sécurité, notamment la suppression de l'accès à distance à l'utilisateur root et la définition du mot de passe root.

Autoriser l'accès à distance

Si vous avez activé iptables et 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 MySQL s'exécute sur le même serveur.

Exécutez la commande suivante pour autoriser l'accès à distance au serveur mysql :

sudo ufw enable
sudo ufw allow mysql

Démarrer 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 message vous informe que le service est déjà lancé :

sudo systemctl start mysql

Lancer 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) aux interfaces accessibles à 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 plusieurs façons de travailler avec un serveur MySQL, mais cet article se concentre sur l'approche la plus basique et la plus compatible, le mysql coque.

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

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

    Le mysql suivant L'invite du shell doit apparaître :

    mysql>
    

Définir 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 mysql shell, remplacez password avec 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 mysql shell, remplaçant password avec 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 ultérieurement, consultez Réinitialiser un mot de passe root MySQL.

Afficher les utilisateurs

MySQL stocke les informations de l'utilisateur dans sa propre base de données. Le nom de la base de données est mysql . À l'intérieur de cette base de données, les informations sur l'utilisateur se trouvent dans une table, un ensemble de données, nommé 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 :

  • SÉLECTIONNER indique à MySQL que vous demandez des données.
  • Utilisateur , Hébergeur , chaîne_authentification indique à MySQL dans quels champs vous voulez qu'il regarde. 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 chiffré.
  • DEpuis mysql.user " indique à MySQL d'obtenir les données de mysql base de données et l'utilisateur tableau.
  • 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 tant que vous n'avez pas tapé un point-virgule.

Hôtes utilisateurs

L'exemple suivant est le résultat 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, plus précisément à l'hôte à partir duquel ils se connectent. L'utilisateur racine 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 généralement.

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

Si votre application se connecte à distance, l'hôte l'entrée 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 ni 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 un par défaut. Si vous en voyez un, vous devez soit supprimer l'utilisateur (référez-vous au nom d'utilisateur avec des guillemets vides, comme ' ') ou lui définir un mot de passe.

Créer une base de données

Il y a 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 suit les bases de données et en contrôle l'accès. La base de données stocke les données, et c'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 vous-même une base de données et d'en informer l'application.

Pour créer une base de données, connectez-vous au mysql shell et exécutez la commande suivante, en remplaçant demodb avec 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 les applications se connectent à la base de données à l'aide de l'utilisateur root, elles disposent généralement de plus de privilèges que nécessaire. 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 mysql coque :

    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 à l'utilisateur table dans mysql base de données, 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 |
    +------------------+-----------+-------------------------------------------+
    

Accorder des autorisations d'utilisateur de base de données

Juste après avoir créé 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.

  1. Donnez à l'utilisateur toutes les autorisations pour votre nouvelle base de données en exécutant la commande suivante :

    GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
    
  2. Supprimez les privilèges pour officialiser le changement en exécutant la commande suivante :

    FLUSH PRIVILEGES;
    
  3. Pour vérifier que ces privilèges sont définis, exécutez la commande suivante :

    SHOW GRANTS FOR 'demouser'@'localhost';
    2 rows in set (0.00 sec)
    

    MySQL renvoie les commandes nécessaires pour reproduire les autorisations de cet utilisateur si vous deviez reconstruire le serveur. USAGE on \*.\* signifie que l'utilisateur n'obtient aucun privilège sur quoi que ce soit par défaut. Cette commande est remplacée par la deuxième commande, qui est la subvention que vous avez exécutée pour la nouvelle base de données.

    +-----------------------------------------------------------------------------------------------------------------+
    | Grants for demouser@localhost                                                                                   |
    +-----------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' |
    | GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost'                                                    |
    +-----------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    

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 point de départ pour en savoir plus.

Articles liés

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

Linux
  1. Comment installer le serveur MySQL sur Ubuntu 16.04

  2. Comment installer le serveur MySQL sur Ubuntu 17.04

  3. Comment installer le serveur Web Apache sur Ubuntu

  4. Comment installer MySQL sur Ubuntu 16.04

  5. Comment installer MySQL sur Ubuntu 18.04

Comment installer MySQL 8.0 sur Ubuntu 18.04

Serveur de surveillance Graylog sur Ubuntu Linux pour la surveillance du serveur/des services

Le guide complet pour installer MySQL sur Ubuntu

Comment installer LAMP sur un serveur Ubuntu 15.04

Comment installer MySQL 8.0 sur Ubuntu 18.04

Comment installer le serveur MySQL sur Ubuntu 20.04