Page 1 sur 1

Config du trio mysql, phpmyadmin et apache2

Publié : dim. 08 juil. 2018, 23:05
par le Manchot Masqué
Intro pour les débutants :
- MySQL est une base de données propriété d'Oracle, aujourd'hui remplacée de plus en plus par son pendant libre mariadb sous GNU/Linux. Cela étant, MySQL reste très utilisée pour des raisons qui dépassent le cadre de document.
- PhpMyAdmin est une interface web pour créer et gérer les bases de données et les tables associées.
- Apache2 est le serveur web par défaut de GNU/Linux, le plus usité sur la toile.

Premier problème : sous la Ubuntu 18.04, mysql est installé sans mot de passe (?!), ce qui signifie que si vous êtes root, il suffit de taper 'mysql' pour rentrer en session, et détruire toutes les bases de données installées !
Réglons donc d'abord cette hérésie sécuritaire :

Code : Tout sélectionner

# mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe';
FLUSH PRIVILEGES;
SELECT user,authentication_string,plugin,host FROM mysql.user;
Après ce traitement de choc, c'est désormais 'mysql -uroot -p' ou 'mysql -p' sous root (on vous pardonnera si vous relisez 2x cette phrase).

Second problème : après l'installation classique de phpmyadmin, il n'est pas rare que l'ordinateur vous insulte avec un :

Code : Tout sélectionner

Access denied for user 'root'@'localhost'
Il faut alors simplement reconfigurer votre phpmyadmin comme suit :

Code : Tout sélectionner

# dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: Unix socket
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root@localhost
MySQL application password for phpmyadmin: mot_de_passe
Password confirmation: mot_de_passe
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
Et normalement, si vous ouvrez http://localhost/phpmyadmin, vous devez pouvoir vous connecter à vos bases.
Mais c'est mal. Parce que votre mot de passe root pour mysql circule en clair sur le réseau !

Heureusement, Apache propose une configuration https, utilisable rapidement

Code : Tout sélectionner

# a2enmod ssl
# a2ensite default-ssl
# a2dissite default
# service apache2 restart
On a ici fait le choix de désactiver le mode http standard (non sécurisé) pour plus de sécurité.
Désormais, c'est https://localhost/phpmyadmin qu'il faut utiliser.
Dernier problème : Firefox râle (avec raison) parce que le certificat n'est pas signé par une autorité de certification (CA).
Normal : la configuration d'Apache2 génère un certificat autosigné, donc inconnu du reste du monde.
Mais comme Firefox est gentil, il permet de rajouter une exception, ce que nous faisons sur les postes clients.

À noter enfin qu'il est toujours utile de connaître la durée des certificats autogénérés par la Ubuntu (10 ans normalement).
Pour les plus curieux(-ses) :

Code : Tout sélectionner

# openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -noout -text