Cette commande vide le contenu de la variable plugin pour l’utilisateur root dans la table mysql.user. Or si je fais
# mysql
MariaDB [(none)]> show grants for 'root'@'localhost';
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------+
MariaDB [(none)]> SELECT user , Password , plugin FROM mysql.user;
+------------+-------------------------------------------+-------------+
| user | Password | plugin |
+------------+-------------------------------------------+-------------+
| root | | unix_socket |
| phpmyadmin | *142FXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1A784 | |
+------------+-------------------------------------------+-------------+
Le plugin unix_socket permet de reproduire dans la BD les droit d’utilisateurs reconnus par le SE [https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/] .
D’autre part mariadb semble configuré par défaut pour refuser l’accès à
$ mariadb -u root -p
Si je comprends bien c’est grâce au plugin unix_socket que, malgré cette config par défaut, l’accès est autorisé pour
# mariadb -u root -p
La meilleure solution semble être de créer un troisième utilisateur (autre que root et phpmyadmin) et de lui donner tous les droits sur la DB :
D’autre solutions proposées (mais que je n’ai pas testées) consistent à donner un pw spécifique à root, ou encore de changer/écraser le plugin unix_socket (https://stackoverflow.com/questions/28068155/access-denied-for-user-rootlocalhost-using-password-yes-after-new-instal) … mais cela revient à contourner la config originelle de mariadb, qui a pour motivation de maximiser la sécurité.