Ubuntu Server 18.04/20.04 : Configurer MySQL pour une utilisation avec phpMyAdmin ou un client MySQL distant

Geek on Web et certains de mes autres services utilisent une base de données MySQL. Le comportement de MySQL a changé sur Ubuntu 18.04 et supérieur et j’avais l’habitude de configurer mon serveur MySQL d’une certaine manière, sauf que c’était une mauvaise pratique.
Je vous donne ici la bonne pratique (et cet article me servira aussi de pense-bête personnel dans le futur).

En fait, depuis Ubuntu 18.04, MySQL utilise le plugin auth-socket. J’avais pour habitude de re-configurer root afin de pouvoir me connecter en root via phpmyadmin.
Ceci n’est pas une solution satisfaisante, et il est en fait préférable de créer un seconds utilisateur avec tous les droits, si on souhaite avoir un utilisateur « super-user ».

Dans cet article nous verrons deux solutions :

  • L’une permet d’utiliser un client phpmyadmin installé sur le serveur qui héberge le serveur MySQL.
  • L’autre permettra de se passer de l’installation de phpmyadmin (et donc d’Apache et de PHP) sur le serveur, et nous autorisera une connexion distante.

Je pars du principe que vous avez Ubuntu 18.04 LTS ou Ubuntu 20.04 LTS installé sur votre serveur et que vous venez d’installer le paquet mysql-server sans configurer quoi que ce soit de plus (nouvelle installation) et qu’aucun autre paquet supplémentaire n’est installé (pas de phpMyAdmin, pas d’Apache ou autre PHP).

Pour une connexion avec phpmyadmin en local sur le serveur MySQL

Si vous souhaitez utiliser une instance de phpmyadmin localement installée sur votre serveur MySQL pour gérer vos bases de données, suivez les étapes ci-dessous après avoir installé le paquet phpmyadmin (qui installera Apache et PHP en même temps, puisque phpMyAdmin les requiert).

Tout d’abord, connectez-vous à MySQL avec la commande mysql (ou sudo mysql si vous n’êtes pas root).
Tapez ensuite les commandes suivantes en remplaçant « nom_utilisateur » et « mot_de_passe » par vos propres informations :

CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
QUIT;

A ce stade, vous devriez pouvoir vous connecter via http://IP-serveur/phpmyadmin à votre serveur de base de données.

Personnellement, ce n’est pas cette méthode que j’utilise, et je préfère gérer mes bases de données via un client distant installé directement sur mes Mac et pas sur le serveur MySQL.
Ce qui nous amène à la seconde méthode.

Pour une connexion distante

Pour se connecter de manière distante, déjà, nous n’avons besoin ni de phpmyadmin, ni d’Apache, et encore moins de PHP.
Nous n’aurons du coup sur le serveur que le paquet mysql-server installé.

Ensuite, pour autoriser une connexion distante, il suffit de se connecter à MySQL comme précédemment puis de retaper les commandes données précédemment mais en remplaçant localhost par le signe « % ».
Ce qui nous donne les commandes suivantes :

CREATE USER 'nom_utilisateur'@'%' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
QUIT;

N’oubliez pas de remplacer ce qui doit être remplacé, comme expliqué précédemment (nom_utilisateur et mot_de_passe).

Modification de la configuration de MySQL

Il faudra modifier la configuration du serveur MySQL afin d’autoriser dans le fichier de configuration la connexion depuis n’importe quelle adresse.
Pour cela, on édite le fichier /etc/mysql/mysql.conf.d/mysqld.cnf avec la commande nano /etc/mysql/mysql.conf.d/mysqld.cnf.

Ici, il faut chercher la ligne bind-address, et remplacer l’adresse de localhost (127.0.0.1) par 0.0.0.0, qui signifie « toutes les adresses IP ».

Voilà, cette étape étant faite, il vous faudra redémarrer MySQL avec systemctl restart mysql (ou le serveur complet) afin que la nouvelle configuration soit prise en compte.

Voilà pour ce petit tutoriel.
Les informations données dans ce tutoriel proviennent en partie de cette page de la documentation officielle française d’Ubuntu.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *