En root pour MariaDB ?

Oui je sais en lisant le titre « en root pour mariaDB » vous vous attendiez peut être à un tutoriel complet sur l’installation et la configuration du célèbre système de gestion de base de données.
Et bien presque ! Le but de ce billet est surtout de répondre à la problématique suivante:
Comment mettre un mot de passe root dans MariaDB?
Cette question peut paraître pour le moins surprenante !Mais si comme moi vous avez récemment installé MariaDB  alors vous vous êtes sans doute  demandé:

Pourquoi lorsque je rentre n’importe quoi comme mot de passe les portes du pénitencier mariaDB me sont ouvertes sans demande d’authentification apparente?

En fait l’explication est assez simple et provient du paramétrage par défaut pour le compte root dans son mode d’authentification à MariaDB.
Mes propos vous paraissent encore bien mystiques , n’hésitez pas suivez moi je passe devant:

Prérequis : une install propre de mariaDB

#installation du package

sudo apt install mariadb-server

#Connexion à mysql

sudo mysql -u root -p

#Allez y testez !
Rentrez n’importe quel mot de passe et ca passe café crème , vous arrivez sur mariaDB avec tous les privilèges!!

wtf

Explications :

Pour visualiser les droits de l’utilisateur « mysql » root dans mariaDB :

use mysql;

Voir le plugin utilisé pour l’utilisateur root ds la vue « mysql »

select User,Password,Plugin from user where User='root';

Cette requête affiche les infos suivantes:

mariaDBunix_socket

On remarque que par défaut l’utilisateur root est en authentification « unix_socket« .
Cela signifie qu’il utilise le mode de connexion des droits unix de l’utilisateur sous lequel mariaDB a été lancé.

En d’autres termes si vous êtes root sur votre terminal linux, vous êtes root aussi pour la connexion à mysql . Il n’y a pas de mot de passe demandé. (ceci est valable aussi si vous lancez la commande « sudo mysql -u root -p » )

Retour vers le futur

Petit disclaismer:

Les manips qui suivent engagent la sécurité de votre installation. Si des personnes ont jugé bon de modifier le mode d’authentification par défaut à mariaDB lors de son installation c’est qu’elles pensent que niveau sécurité c’est mieux.

  •  Elles partent dans doute du principe que si le mot de passe Unix Root est compromis alors un mot de passe différent pour se connecter à mariaDB n’est que pur artifice.
  • Un mot de passe de moins à retenir. Avant si ce dernier était récupéré par un méchant hacker à capuche il pouvait faire plein de dégats sans avoir de compte unix privilégié.
  •  Dernier avantage ,la connexion à mariaDB se faisant automatiquement dès lors que l’on possède les droits sudo, cela enlève un niveau d’authentification et pour l’adminsys ca allège ses manip.

Mais pour les partisans du « c’était mieux avant  » et des grognards comme moi qui n’aiment pas qu’on leur change leurs habitudes comme ça du jour au lendemain, la méthode qui suit est faite pour vous 🙂

Mettre un mot de passe à l’utilisateur root de mariadb:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Changer le mode unix socket en « mysql native_password »:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
flush privileges;

exit;

Test micro

mysql -u root -p

si le mauvais mot de passe est rentré on a une erreur bloquante comme avant 🙂

si vous avez saisi le bon password, bah on est ok , on accède à toute la base de mariaDB!!

En résumé:

Dans ce billet ,nous avons reconfiguré mariaDB avec un compte root qui lui est propre. Vous savez désormais comment passer le plugin d’authentification de « unix_socket » en « mysql_native_password ».

Partager l'article

2 commentaires sur En root pour MariaDB ?

    • Effectivement,merci j’ai oublié de parler de l’utilitaire mysql_secure_installation. Mais c’est presque voulu car c’est ce genre de script automatique où tu réponds à une série de questions qui typiquement t’empêche de comprendre ce que tu fais 😉

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*