Comment autoriser les connexions à distance à MySQL

Si vous travaillez avec une base de données MySQL(MySQL database) , vous êtes déjà conscient des défis auxquels vous êtes confronté pour assurer la sécurité de votre base de données. Des tentatives de piratage de base de données utilisant des injections SQL aux attaques par force brute, il est difficile de protéger vos données, surtout si vous travaillez avec une base de données à distance.

Il existe des moyens de configurer un serveur SQL pour autoriser les connexions à distance, mais vous devez être prudent, car autoriser les connexions à distance sur un serveur MySQL peut faire de votre base de données une cible facile pour les pirates. Si vous souhaitez autoriser des connexions distantes sécurisées à une base de données MySQL , voici ce que vous devez savoir.

Avant que tu commences(Before You Begin)

Avant d'apporter des modifications à votre base de données MySQL , il est important de sauvegarder votre base de données(backup your database) , surtout si vous travaillez sur un serveur de production (un serveur en cours d'utilisation). Toute modification que vous apportez à votre base de données ou au serveur qui l'héberge peut entraîner une grave perte de données en cas de problème.

Vous pouvez également constater que des modifications apportées aux connexions de votre serveur peuvent vous empêcher d'y accéder par la suite. Si cela se produit, vous devrez peut-être consulter un administrateur de serveur pour une assistance supplémentaire. Une bonne idée est de tester toutes les modifications sur un serveur MySQL exécuté localement pour vérifier si vos modifications fonctionnent avant de les essayer à distance.

Il est également probable que si vous apportez des modifications à un serveur distant, vous aurez besoin d'un moyen sûr de vous connecter et d'apporter des modifications. SSH (Secure Shell) est souvent le meilleur moyen de le faire, car il vous permet de vous connecter à votre serveur distant. Vous pouvez également utiliser SSH pour vous connecter aux serveurs de votre réseau local, tels que ceux hébergés sur un Raspberry Pi(hosted on a Raspberry Pi) .

Ce guide vous guidera à travers les étapes de configuration de MySQL pour autoriser les connexions à distance, mais vous devrez d'abord vous assurer que vous disposez d'un accès direct ou distant au serveur hébergeant votre serveur MySQL .

Supposons que(Suppose) vous n'ayez pas accès à distance à votre serveur via SSH (par exemple). Dans ce cas, vous ne pourrez pas configurer votre base de données MySQL pour autoriser directement les connexions à distance, sauf si votre compte root mySQL autorise déjà les connexions à distance. Donc, vous devrez d'abord établir cette connexion avant de pouvoir continuer.

Modification de votre fichier de configuration MySQL(Editing Your MySQL Configuration File)

La première étape de la configuration de MySQL pour autoriser les connexions à distance consiste à modifier votre fichier de configuration MySQL . À ce stade, ce guide supposera que vous êtes déjà connecté au serveur, PC ou Mac hébergeant votre base de données mySQL à distance et que vous avez accès à la console. 

Vous pouvez également configurer un serveur MySQL local à l'aide d'un terminal ouvert sur Mac ou Linux ou d'un éditeur de texte sur Windows .

  1. Pour commencer, utilisez l'éditeur de texte de votre console préférée pour modifier votre fichier de base de données MySQL . Sous Linux , tapez sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf dans un terminal ou une fenêtre SSH pour modifier ce fichier à l'aide de l' éditeur nano (en supposant que votre base de données (nano)MySQL se trouve à l'emplacement par défaut)

  1. Si vous utilisez Windows , ouvrez l' Explorateur de fichiers(File Explorer) et accédez au dossier contenant votre installation MySQL (par exemple, (MySQL)C:/Program Files/MySQL/MySQL Server 8.0 ). Ouvrez le fichier my.ini à l'aide de votre éditeur de texte par défaut (par exemple, Bloc(Notepad) -notes ) en double-cliquant sur l'entrée. S'il n'y est pas, créez d'abord le fichier(create the file first) .

  1. Sur Mac , ouvrez une fenêtre de terminal et tapez sudo nano /usr/local/etc/my.cnf . Il s'agit du fichier de configuration par défaut pour MySQL si vous avez installé MySQL en utilisant homebrew(using homebrew) .

Les emplacements référencés ci-dessus sont les emplacements par défaut des fichiers de configuration MySQL . Si ces commandes ne fonctionnent pas, vous devrez rechercher manuellement les fichiers pertinents ( my.cnf , mysqld.cnf ou my.ini ) pour localiser le chemin de fichier approprié.

Définition d'une plage IP d'adresse de liaison sécurisée(Setting a Safe Bind-Address IP Range)

  1. Une fois que vous avez ouvert le fichier de configuration MySQL pour votre serveur, utilisez la touche fléchée de votre clavier pour atteindre la section bind-address du fichier. Cette plage d'adresses IP limite les connexions à votre base de données, qui est généralement définie pour n'autoriser que les connexions à partir de la machine locale ou du serveur utilisant 127.0.0.1 .

  1. Si vous souhaitez configurer votre base de données MySQL pour autoriser les connexions à partir d'appareils utilisant votre connexion Internet actuelle, recherchez d'abord votre adresse IP publique(find your public IP address) , puis remplacez 127.0.0.1 par cette adresse IP. Vous pouvez également la remplacer par une adresse IP pour l'appareil ou le serveur à partir duquel vous souhaitez autoriser les connexions.

  1. Dans certaines circonstances, vous souhaiterez peut-être autoriser toutes(all) les connexions distantes à une base de données MySQL . Cela comporte des risques extrêmes(extreme risk) et ne doit pas être utilisé sur un serveur de production. Si vous voulez autoriser cela, remplacez 127.0.0.1 par 0.0.0.0 .

  1. Notez la valeur du port dans la section Paramètres de base(Basic Settings) . Cela sera nécessaire dans la section suivante. S'il n'est pas visible, la valeur par défaut sera utilisée, à savoir le port 3306 . Vous pouvez ajouter votre propre port en tapant port = xxxx sur une nouvelle ligne, en remplaçant xxxx par une valeur de port appropriée.

  1. Une fois que vous avez configuré l' adresse de liaison(bind-address ) dans votre fichier de configuration MySQL , enregistrez le fichier. Si vous êtes sous Linux , sélectionnez Ctrl + O et Ctrl + X pour ce faire. Sur Mac, sélectionnez Command + O et Command + X . Les utilisateurs Windows peuvent enregistrer en sélectionnant Fichier(File ) > Enregistrer(Save) .

  1. Ensuite, les utilisateurs Linux et Mac peuvent redémarrer MySQL en tapant mysql.server stop && mysql.server start ou mysql.server restart . Vous devrez peut-être élever la commande à l' aide de sudo(using sudo) (par exemple, sudo mysql.server restart ) et utiliser le chemin approprié vers le fichier mysql.server (par exemple /usr/local/bin/mysql.server ).

  1.  Si la commande ci-dessus ne fonctionne pas, essayez plutôt sudo service mysql restart .

  1. Pour redémarrer MySQL sous Windows , ouvrez une nouvelle fenêtre PowerShell en cliquant avec le bouton droit sur le menu (PowerShell)Démarrer(Start) et en sélectionnant Windows PowerShell (Admin) . Dans la fenêtre PowerShell, tapez net stop mysql80 suivi de net start mysql80 , en remplaçant mysql80 par le nom de service correct sur votre PC.

Si vous n'êtes pas sûr du nom de service correct sous Windows , tapez net start pour le trouver. Si vous ne pouvez pas recharger votre configuration, redémarrez votre serveur et rechargez MySQL manuellement (si nécessaire).

Configuration de vos pare-feu(Configuring Your Firewalls)

À ce stade, votre base de données MySQL doit autoriser les connexions à distance à partir d'appareils utilisant l'adresse IP que vous avez définie comme valeur d' adresse de liaison(bind-address) dans votre fichier de configuration MySQL (ou à partir de tous les appareils si vous définissez cette valeur sur (MySQL)0.0.0.0 à la place). Cependant, les connexions seront toujours bloquées par votre appareil ou par le pare-feu du réseau(device or network firewall) .

La plupart des serveurs et des PC utilisent un pare-feu pour bloquer les connexions à moins que l'accès à un port spécifique ne soit accordé. Les étapes de configuration varient selon que vous exécutez MySQL sous Windows ou Linux . Les pare-feu Mac(Mac) sont désactivés par défaut, vous ne devriez donc pas avoir à effectuer d'étapes supplémentaires ici.

Configurer les pare-feu Linux(Configure Linux Firewalls)

De nombreux serveurs Linux utilisent iptables comme utilitaire de pare-feu par défaut. Vous pouvez le configurer en suivant les étapes ci-dessous.

  1. Ouvrez un terminal ou une connexion SSH et tapez sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Remplacez XXXX par l'adresse IP de l'appareil à (X.X.X.X)partir(from) duquel vous souhaitez autoriser les connexions MySQL et remplacez YYYY par la valeur de port correspondante de votre fichier de configuration MySQL (par exemple, (MySQL)3306 ).

  1. Cela configurera temporairement le pare-feu. Si vous utilisez un serveur Linux basé sur Debian ou Ubuntu , rendez cette modification permanente en tapant sudo netfilter-persistent save et sudo netfilter-persistent reload dans le terminal ou la fenêtre SSH.

Si iptables n'est pas l'outil de pare-feu par défaut pour votre distribution Linux , vous devrez consulter le manuel de l'utilisateur de votre distribution pour plus d'informations. Si certains packages (tels que netfilter-persistent ) ne sont pas disponibles, utilisez l'outil de référentiel de logiciels de votre distribution pour l'installer (par exemple, sudo apt install netfilter-persistent ).

Configurer les pare-feu Windows(Configure Windows Firewalls)

Si vous utilisez un PC ou un serveur Windows pour héberger votre base de données, vous pouvez configurer votre pare-feu en procédant comme suit :

  1. Cliquez avec le bouton droit sur(Right-click) le menu Démarrer(Start) et sélectionnez Exécuter(Run) .

  1. Dans la zone Exécuter(Run) , tapez wf.msc et sélectionnez OK .

  1. Dans la fenêtre Windows Defender , sélectionnez (Windows Defender)Règles de trafic entrant(Inbound Rules ) > Nouvelle règle(New Rule) .

  1. Dans la fenêtre Assistant Nouvelle règle de trafic entrant , sélectionnez (New Inbound Rule Wizard)Port > Suivant(Next) .

  1. Dans le menu suivant, sélectionnez TCP dans les options, tapez 3306 (ou la valeur de port indiquée dans votre fichier de configuration MySQL ), puis sélectionnez (MySQL)Next .

  1. Dans le menu Action , laissez l'option par défaut (Action)Autoriser la connexion(Allow the connection) activée, puis sélectionnez Suivant(Next) .

  1. Confirmez que vous souhaitez que la règle s'applique à tous les types de réseau, puis sélectionnez Suivant(Next)

  1. Tapez un nom descriptif pour la règle (par exemple MySQL ) dans le port fourni, puis sélectionnez Terminer(Finish) pour l'ajouter à votre liste de règles de pare-feu.

Si vous rencontrez des difficultés pour vous connecter, répétez ces étapes ci-dessus, en veillant à créer une nouvelle règle sortante(outbound rule ) dans les paramètres de votre pare-feu en utilisant les mêmes détails (port 3306, etc.). Vous devrez peut-être également configurer votre routeur de réseau local pour ouvrir les ports bloqués nécessaires(open the necessary blocked ports) pour autoriser les connexions entrantes et sortantes vers votre base de données. 

Connexion à un serveur distant à l'aide de MySQL(Connecting to a Remote Server Using MySQL)

Après avoir configuré votre base de données MySQL pour autoriser les connexions à distance, vous devrez établir une connexion avec celle-ci. Vous pouvez le faire à l'aide de la commande mysql ( mysql.exe sous Windows ) à partir d'un terminal ou d'une fenêtre PowerShell .

Si vous utilisez Windows , vous devrez vous assurer que MySQL est installé localement(MySQL is installed locally) avant de commencer. Les utilisateurs Mac(Mac) peuvent installer MySQL en utilisant homebrew(using homebrew) depuis le terminal ( brew install mysql ), tandis que les utilisateurs Linux peuvent utiliser leur référentiel d'applications local (par exemple, sudo apt install mysql ) pour installer les packages nécessaires.

Connexion à MySQL sur Linux ou Mac(Connecting to MySQL on Linux or Mac)

  1. Pour vous connecter à votre serveur MySQL distant sur Mac ou Linux , ouvrez une nouvelle fenêtre de terminal et tapez mysql -u username -h XXXX:XXXX -p . Remplacez XXXX:XXXX par l'adresse IP et le numéro de port de votre serveur distant (par exemple 100.200.100.200:3306 ) et nom d' utilisateur(username) par votre nom d'utilisateur MySQL.

  1. Lorsque vous y êtes invité, confirmez votre mot de passe. Si la connexion est réussie, un message de réussite apparaîtra dans le terminal.

Connexion à MySQL sous Windows(Connecting to MySQL on Windows)

  1. Pour vous connecter à un serveur MySQL distant sous Windows , ouvrez une nouvelle fenêtre PowerShell en cliquant avec le bouton droit sur le menu (PowerShell)Démarrer(Start) et en sélectionnant Windows PowerShell (Admin) .

  1. Dans la nouvelle fenêtre PowerShell, tapez cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ " pour entrer dans le bon dossier, en remplaçant ce répertoire par le bon répertoire d'installation sur votre PC. Par exemple, si votre version de MySQL est 8.0.1, utilisez plutôt le dossier MySQL Workbench 8.0.1 .

  1. À partir de là, tapez .\mysql.exe -u username -h X.X.X.X:XXXX -p . Remplacez XXXX:XXXX par l'adresse IP et le numéro de port de votre serveur distant (par exemple, 100.200.100.200:3306 ) et le nom d' utilisateur(username) par un nom d'utilisateur MySQL permettant l'accès à distance (tel que root ). Suivez(Follow) les instructions supplémentaires à l'écran.
  2. Fournissez votre mot de passe, lorsque vous y êtes invité, pour terminer le processus de connexion et accéder à distance à votre base de données MySQL .

Si cela ne fonctionne pas, connectez-vous au serveur ou au PC hébergeant votre serveur MySQL en utilisant SSH (ou accédez-y directement) en suivant ces étapes et en utilisant l' argument -h localhost . Vous pouvez ensuite créer un compte utilisateur approprié en suivant les étapes ci-dessous.

Autoriser l'accès des utilisateurs distants à une base de données MySQL(Allowing Remote User Access to a MySQL Database)

À ce stade, vous devriez pouvoir vous connecter à distance à votre serveur MySQL en utilisant le compte d'utilisateur root de votre serveur ou un autre compte d'utilisateur avec des privilèges élevés. (MySQL)Comme ce niveau d'accès n'est pas sûr, vous préférerez peut-être créer un compte plus restreint pour accéder à votre base de données MySQL .

Ce compte aura un accès limité à votre serveur MySQL , lui permettant d'interagir uniquement avec les bases de données sélectionnées. Il ne pourra pas apporter de modifications plus sérieuses, telles que l'accès à d'autres données de base de données, la création de nouveaux comptes d'utilisateurs, etc. 

Vous devrez avoir la possibilité de vous connecter à distance à votre serveur MySQL . Si vous ne pouvez pas utiliser votre compte root à distance, vous devrez accéder au shell de votre serveur à l'aide de la commande mysql via une connexion (mysql)SSH distante ou en accédant directement au PC ou au serveur hébergeant le serveur.

  1. Dans votre shell MySQL distant (à l'aide de l' outil mysql ), tapez (mysql)CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; et sélectionnez Entrée(Enter) . Remplacez username par le nom d'utilisateur que vous souhaitez créer, xxxx par l'adresse IP à partir de laquelle vous souhaitez vous connecter et password par un mot de passe approprié.

  1. Vous devrez accorder à votre nouveau compte les autorisations nécessaires. Pour ce faire, tapez GRANT ALL ON databasename.* TO username@”x.x.x.x”; et remplacez le nom de la base de données, le nom d'utilisateur(databasename, username, ) et xxxx  par les détails corrects. Si vous le souhaitez, remplacez nombase de données(databasename) par * pour lui accorder l'accès à toutes les bases de données. 

Avec l'accès accordé, utilisez les étapes de la section ci-dessus pour vous connecter à distance à votre serveur en utilisant votre nouveau compte (par exemple mysql -u username -h XXXX:XXXX -p ).

Sécurisation des données de votre base de données(Securing Your Database Data)

Que vous travailliez avec MySQL ou un autre type de base de données SQL , il est important de sécuriser vos connexions pour maintenir la sécurité de vos données. Un bon moyen de le faire est de générer des clés SSH pour l'accès à distance(generate SSH keys for remote access) à votre serveur, plutôt que de s'appuyer sur des mots de passe obsolètes (et facilement devinables).

Si vous craignez de perdre des données, vous pouvez facilement sauvegarder votre base de données(back up your database) en ligne. La plupart des bases de données sont exécutées à l'aide de serveurs Linux . Vous pouvez (Linux)facilement automatiser une sauvegarde de fichiers Linux(automate a Linux file backup easily) . Si vous utilisez MySQL sous Windows , vous pouvez configurer un système de sauvegarde automatique similaire pour Windows(automatic backup system for Windows) , vous permettant de restaurer vos données en cas d'urgence.



About the author

Je suis un ingénieur en matériel avec plus de 10 ans d'expérience dans le domaine. Je me spécialise dans les contrôleurs et les câbles USB, ainsi que dans les mises à niveau du BIOS et le support ACPI. Dans mes temps libres, j'aime aussi bloguer sur divers sujets liés à la technologie et à l'ingénierie.



Related posts