Le guide est de supposer que vous avez un serveur réservé à MySQL avec une adresse IP statique accessible, peut-être sur le cloud ou quelque part sur votre réseau local. Les commandes suivantes, dans cette sous-section, doivent être exécutées sur le shell du serveur. Installons et configurons rapidement MySQL sur Ubuntu.
$ sudo apt mise à jourLa dernière commande exécutera un script pour modifier certaines des paramètres non sécurisés de MySQL. Le premier serait une invite pour installer un plugin de validation de mot de passe. Cela vérifierait si le nouveau mot de passe que vous définissez pour les utilisateurs est assez fort ou non. Vous pouvez vous retirer de ce plugin, si vous voulez. Après cela, vous serez invité à définir le mot de passe de l'utilisateur racine mysql. Allez-y et définissez un mot de passe utilisateur racine solide.
Appuyez sur Y | Y pour oui, toute autre touche pour non: nAprès cela, vous pouvez à peu près dire Oui À toutes les autres invites de ce script, alors que le script supprime l'utilisateur de test, supprime la base de données de test, désactive la connexion à la racine distante et recharge enfin sa table de privilège. Une fois cela fait, puisque nous avons interdit la connexion à la racine distante, créons une base de données et un nouvel utilisateur qui peuvent accéder à cette base de données à distance sans avoir réellement SSH (ou se connecter) dans la coque UNIX / Linux du serveur. Mais avant de le faire, vérifions si notre construction de mysql a TLS intégré ou non.
Vérification si TLS est disponible
TLS est disponible dans MySQL uniquement si MySQL est compilé pour le faire intégrer. Il n'y a pas de module dynamique à charger. Donc, si vous n'êtes pas sûr que votre package MySQL soit installé ou non TLS, vous pouvez vérifier cela en exécutant:
$ sudo mysqlS'il dit que les variables have_opensessl et have_ssl avoir des valeurs définies sur DÉSACTIVÉ Ensuite, vous avez SSL et vous êtes prêt à partir (vous n'avez qu'à l'activer, en lisant plus loin). Si les valeurs sont définies sur NON, Ensuite, vous devez obtenir une version différente de MySQL de votre gestionnaire de packages ou ailleurs.
MySQL>Configuration de MySQL
Par défaut, le serveur MySQL écoute uniquement sur l'interface de bouclage, c'est-à-dire sur l'adresse «localhost» ou «127.0.0.1 ', Pour les connexions distantes, nous voulons qu'il écoute également sur la propriété publique publique IP statique. Pour ce faire, ouvrez le fichier, / etc / mysql / mon.CNF et ajoutez les deux lignes suivantes à la toute fin.
…Ici, vous remplacez le avec l'IP réelle de votre serveur. Si vous doutez de la propriété intellectuelle à utiliser, vous pouvez utiliser 0.0.0.0 pour écouter sur toutes les interfaces. Redémarrez maintenant le serveur, pour que la nouvelle configuration ait lieu.
$ sudo Service mysql redémarrageCréation d'un utilisateur distant
Remarque: Si vous souhaitez utiliser la base de données en production, il est probable que le client qui se connectera à cette base de données - votre frontal - aura une IP statique. Si tel est le cas, remplacez le pourcentage de symbole «%» par le client IP approprié. «%» n'est qu'un joker, ce qui signifie «toute valeur». Nous allons configurer notre myuser afin qu'il puisse se connecter à partir de n'importe quelle adresse IP (par exemple, l'évolution de l'adresse IP de votre connexion à haut débit domestique) qui est sans doute précaire.
$ sudo mysqlRemplacer 'mot de passe' avec un mot de passe fort réel et nous avons un utilisateur nommé myuser qui a un accès complet à la base de données mydatabase.
Activer TLS (également connu sous le nom de «SSL»)
Pendant que vous êtes connecté au shell MySQL en tant qu'utilisateur racine MySQL, vous pouvez vérifier l'état de la connexion en tapant \ S:
mysql> \ sFaites attention aux lignes en surbrillance sur la connexion et SSL. Alors que cet état est bien pour une connexion locale de l'utilisateur racine, au moment où nous nous connectons sur TLS comme le myuser Le type de connexion sera dépassé TCP / IP et non une prise brute et un chiffre SSL sera utilisé. Il y a une simple commande pour accomplir cela. Mais d'abord, quittons notre invite mysql.
MySQL>MAINTENANT,
$ sudo mysql_ssl_rsa_setup --uid = mysql
Une fois cela fait, vous pouvez regarder le Variable harid encore.
Connexion d'un client MySQL séparé
Il existe de nouveaux paramètres indiquant que le certificat TLS et la clé sont en place et que TLS est activé. Maintenant, vous pouvez vous connecter de cette machine, ouvrir un client MySQL sur votre ordinateur local, si vous n'en avez pas (et utilisez Debian ou Ubuntu), obtenez un client Shell MySQL:
$ sudo apt installer mysql-clientRemplace le myuser et Avec votre nom d'utilisateur et votre serveur IP réel, entrez votre mot de passe choisi et vous devez être connecté à la base de données. Vérifiez la connexion:
mysql> \ sVous pouvez voir que maintenant il utilise RSA pour crypter votre trafic et que la connexion est à une IP spécifique sur TCP / IP. Maintenant, votre connexion à cette base de données MySQL est sécurisée.
C'est le moyen le plus simple de sécuriser vos connexions MySQL distantes avec TLS. Gardez à l'esprit que ce n'est pas la même chose que de sécuriser un client phpmyadmin sur TLS. C'est-ce que TLS et HTTP sont combinés, et vous oblige à sécuriser l'interface Web. La connexion entre le phpmyadmin, qui rend votre interface utilisateur Web, et la base de données peut encore être non cryptée, ce qui est bien tant qu'ils sont sur le même serveur.
Vous pouvez en savoir plus sur la connexion TLS, les CAS sous-jacents, les certificats et la gestion clé dans les documents officiels de MySQL.