26 votes

mysql (mariadb) ERROR 1698 (28000) : Accès refusé pour l'utilisateur 'root'@'localhost'.

Je travaille sur Xubuntu 15.04. J'ai déjà installé le serveur MariaDB sur différents systèmes et on m'a toujours demandé un mot de passe root lors de l'installation. Cette fois, cependant, je ne me souviens pas qu'on m'ait demandé le mot de passe. Lorsque j'essaie de me connecter sans mot de passe (ou avec un mot de passe vide), j'obtiens le message suivant Access denied for user 'root'@'localhost' erreur. J'ai essayé de désinstaller complètement le paquet en

sudo apt-get remove mariadb-server
sudo apt-get purge mariadb-server

Quand j'ai réinstallé, on ne m'a toujours pas demandé le mot de passe root.

J'ai essayé le mysqld --skip-grant-tables l'approche de mysql : comment réparer l'accès refusé à l'utilisateur 'root'@'localhost' ? . Je peux modifier le mot de passe de l'utilisateur root dans la base de données mysql - au moins la valeur de hachage change - mais je ne peux toujours pas me connecter avec le nouveau mot de passe après un redémarrage du serveur mysql. Je reçois toujours la même erreur.

L'utilisateur debian-sys-maint n'existe pas. Je ne peux donc pas l'utiliser pour réparer quoi que ce soit.

Une idée de ce que je pourrais essayer d'autre ?

39voto

Abhinav bhardwaj Points 499

Vous devez réinitialiser le mot de passe. donc pour cela

sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

11voto

katriel Points 195

L'idée avec la nouvelle configuration est que vous ne devriez pas utiliser de mots de passe du tout. Voir Plugin d'authentification UNIX_SOCKET pour les détails.

Ce qui est particulièrement pertinent, c'est le contenu de /usr/share/doc/mariadb-server-10.0/README.Debian.gz sur Ubuntu 16.04 :

Sur les nouvelles installations, aucun mot de passe root n'est défini et aucun utilisateur debian-sys-maint n'est défini. n'est plus créé. Au lieu de cela, le compte racine MariaDB est configuré pour être authentifié en utilisant le socket unix, c'est-à-dire que toute invocation de mysqld par root ou via sudo permettra à l'utilisateur de voir l'invite mysqld. permettra à l'utilisateur de voir l'invite mysqld.

Vous ne devez jamais supprimer l'utilisateur mysql "root". Bien qu'il n'ait pas de mot de passe n'est défini, le plugin unix_auth garantit qu'il ne peut être exécuté localement qu'en tant que root utilisateur.

Les informations d'identification dans le fichier /etc/mysql/debian.cnf spécifient l'utilisateur qui est utilisé par la commande init scripts pour arrêter le serveur et effectuer la logrotation. Il s'agissait auparavant de l'utilisateur debian-sys-maint qui n'est plus utilisé car root peut s'exécuter directement.

Ainsi, si vous désactivez ce plug-in pour root et définissez un mot de passe, la tâche cron quotidienne sera interrompue car elle suppose qu'elle se connectera en tant que root sans mot de passe, mais avec le plug-in.

Plus tard, il est dit :

scripts doivent être exécutés en tant qu'utilisateur ayant les autorisations requises et être identifié via unix_socket.

Il semble donc que les mots de passe ne doivent plus être utilisés par les applications.

2voto

d72b617c Points 289

J'ai résolu le problème en suivant la réponse de ce post :

Impossible de réinitialiser le mot de passe root de MySQL (MariaDB)

Il faut changer le champ plugin de mysql.user pour toutes les racines en une chaîne vide.

2voto

dxvargas Points 121

Je l'ai fait en exécutant cette commande, juste après l'installation :

$ sudo mysql_secure_installation

A la première étape, le mot de passe est vide, donc appuyez simplement sur Enter.

0voto

trasba Points 1

J'ai eu le même problème sur un raapberry pi avec stretch. Ma solution a été de créer un nouvel utilisateur avec tous les privilèges en faisant ce qui suit :

sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

MariaDB [(none)]> use mysql
MariaDB [mysql]> FLUSH PRIVILEGES;
GRANT ALL privileges ON mysql.* TO 'admin'@'localhost' with grant option;

Maintenant je peux me connecter et utiliser l'utilisateur "admin" comme super-utilisateur.

J'espère que cela va aider quelqu'un.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X