Le problème ici est que lorsque MariaDB ou MySQL sont installés / mis à jour (surtout si, à un moment donné, root est défini sans mot de passe), le mot de passe est vide (ou ignoré) dans la table Users. utilisateur système correspondant à un utilisateur MySQL.
Vous pouvez tester ceci comme suit en passant à la racine du système, puis tapez:
mysql -uroot -p
Entrez ensuite un mot de passe ou le mot de passe erroné . Vous serez probablement laissé entrer (vous pourrez peut-être vous connecter à partir de la racine unix simplement par # mysql
car le mot de passe n'est pas pertinent et l'utilisateur est défini).
Alors, que se passe-t-il? Eh bien, si vous vous connectez en tant que root et procédez comme suit:
select User,host,plugin from mysql.user;
+----------------+-----------+-----------------------+
| User | host | plugin |
+----------------+-----------+-----------------------+
| root | localhost | auth_socket |
+----------------+-----------+-----------------------+
vous noterez auth_socket
(qui peut lire unix_socket
sur MariaDB). Ces sockets ignorent les mots de passe et autorisent l'utilisateur Unix correspondant dans sans une vérification de mot de passe. C'est pourquoi vous pouvez vous connecter avec root , mais pas avec un autre utilisateur.
La solution consiste donc à mettre à jour les utilisateurs pour qu’ils n’utilisent pas auth_socket/unix_socket
et définissent correctement un mot de passe.
Sur MariaDB (& lt; 10.2) qui est sur la version 16 d’Ubuntu à partir de 2017, cela devrait suffire:
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(Il est possible que la configuration du plug-in pour vider fonctionne. YMMV. Je n'ai pas essayé ceci.)
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
Sinon:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
Alors
FLUSH PRIVILEGES;
Pour le compte rendu, la solution consistant à supprimer l'utilisateur et à le recréer avec '%' m'a totalement exclu de la base de données et peut causer d'autres problèmes à moins d'obtenir la déclaration grant
correctement - racine que vous avez déjà.
D'après mon expérience, le problème ne se produit qu'avec l'utilisateur root, car les autres utilisateurs seront ajoutés manuellement et ne feront pas partie de l'installation / de la mise à jour initiale.