Pré-requis
Intérêt d’avoir des utilisateurs spécifiques
Quand on installe MySQL, on a un utilisateur par défaut : root. Cependant, il est conseillé de créer des utilisateurs spécifiques et de réserver le user root à des taches d’administration. Ainsi, qu’il s’agit d’une application devant accéder à la base de données ou d’un utilisateur humain, nous allons créer un compte utilisateurs spécifique.
Notion de client MySQL
Il s’agit de tout logiciel nous permettant de manipuler une instance MySQL. On distingue les clients graphiques des outils en “ligne de commande”. Dans le cadre de ce tutoriel, nous allons manipuler les deux.
Concernant les outils graphiques nous avons opté pour MySQL Workbench fourni par Oracle qui est aussi l’éditeur de MySQL.
Notion d’accès distant
Il s’agit de toutes les connections qui se produisent depuis une machine autre que celle ou MySQL est installée. On pourrait citer au moins trois use cases récurrents :
- Pendant la phase de développement, les développeur ont besoin d’accéder depuis leur machine à la base de données de test qui et commune à toute l’équipe.
- Pendant la phase d’exploitation, l’équipe support peut avoir accès à la base de données de PROD.
- Au niveau architecture, on peut choisir d’installer la base de données sur un serveur distinct de celui ou est déployé l’application elle-même. Ceci pourrait se justifier entre autres par des problématiques de sécurité.
Techniquement, il est possible d’autoriser des utilisateur, développeurs et service support, de se connecter directement à la machine pour exécuter leurs requêtes. Mais cette solution n’est pas acceptables tant au niveau sécurité que au niveau du confort. En effet, ces utilisateurs souhaitent en général utiliser un client graphique pour consulter leur bases de donner Pour tous ces cas nous avons besoin que des utilisateurs puissent accéder à MySQL depuis leur machine
Configuration du serveur
Autoriser la machine serveur à accepter des requêtes MySQL provenant de machines distantes
MySQL écoute sur le port 3306 par défaut. Il faut donc s’assurer que la machine serveur autorise les requêtes sur ce port ou le port qui aurait été défini dans la configuration.
La manière d’ouvrir le port 3306 dépend de votre infrastructure. Dans notre cas, nos servés étant hébergés sur le cloud de Google, nous pouvons le faire en deux clics en rajoutant une règle de parefeu.
Autoriser MySQL à accepter des requêtes provenant de machines distantes
Il nous faut modifier le fichier de config de MySQL :
sudo vi /etc/mysql/my.cnf
Il faut ensuite retrouver le paramètre bind-address et lui donner la valeur 0.0.0.0
Autoriser un utilisateur donné à accéder à MySQL depuis une machine distante
Avant tout nous allons créer l’utilisateur
CREATE USER 'paterne_gaye'@'%' IDENTIFIED BY 'mot-de-passe';
Ensuite nous allons autoriser cet utilisateur à accéder à tous les objets de la base de données depuis n’importe quelle mahine.
GRANT ALL PRIVILEGES ON *.* TO 'paterne_gaye'@'%' IDENTIFIED BY 'paterne_gaye' WITH GRANT OPTION;
Dans le cas ou l’utilisateur dispose d’une IP fixe, par exemple 192.168.2.7 , nous pouvons restreindre l’autorisation à cette IP :
GRANT ALL PRIVILEGES ON *.* TO 'paterne_gaye'@'192.168.2.7' IDENTIFIED BY 'paterne_gaye' WITH GRANT OPTION;
Accès à MySQL depuis la ligne de commande
MySQL Workbench intègre un client non-graphique MySQL. Pour y avoir accès, il suffit de rajouter le dossier d’installation de MySQL Workbench dans le path.
Acces à MySQL depuis une machine distance à l’aide d’un client graphique
Nous pouvons également accéder à notre base de données distante depuis notre machine locale :