Je travaille sur Xubuntu 15.04. J'ai déjà installé MariaDB-Server 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 d'avoir demandé le mot de passe. Lorsque j'essaie de me connecter sans mot de passe (ou mot de passe vide), l'erreur Access denied for user 'root'@'localhost'
s'affiche. 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é l'approche mysqld --skip-grant-tables
de mysql comment résoudre un problème d'accès refusé pour 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. Donc, je ne peux pas l'utiliser pour réparer quoi que ce soit.
Des idées quoi d'autre je pourrais essayer?
J'ai résolu le problème suite à la réponse de ce post:
Impossible de réinitialiser le mot de passe root de MySQL (MariaDB)
Il faut changer le champ de plugin de mysql.user pour toutes les racines en une chaîne vide.
Vous devez réinitialiser le mot de passe. donc pour ça
Sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
L'idée avec la nouvelle configuration est que vous ne devriez pas utiliser de mot de passe du tout. Voir UNIX_SOCKET Authentication Plugin pour plus de détails.
Le contenu de /usr/share/doc/mariadb-server-10.0/README.Debian.gz sur Ubuntu 16.04 est particulièrement pertinent:
Lors de nouvelles installations, aucun mot de passe root n’est défini et aucun utilisateur debian-sys-maint n’est plus créé. À la place, le compte racine MariaDB est configuré pour être authentifié à l'aide du socket unix, par exemple. toute invocation de mysqld par root ou via Sudo permettra à l'utilisateur de voir l'invite mysqld.
Vous ne pouvez jamais jamais supprimer l'utilisateur mysql "root". Bien qu'aucun mot de passe ne soit défini, le plug-in unix_auth garantit qu'il ne peut être exécuté que localement en tant qu'utilisateur root.
Les informations d'identification dans /etc/mysql/debian.cnf spécifient l'utilisateur utilisé par les scripts d'initialisation pour arrêter le serveur et effectuer une journalisation. C’était l’utilisateur debian-sys-maint qui n’est plus utilisé en tant que root peut s’exécuter directement.
Donc, si vous désactivez ce plug-in pour root et définissez un mot de passe, le travail journalier cron sera interrompu car il supposera qu'il se connectera en tant qu'utilisateur root sans mot de passe, mais avec le plug-in.
Plus tard, il est écrit:
Les scripts doivent être exécutés en tant qu'utilisateur disposant des droits requis et identifiés via unix_socket.
Il semble donc que les applications ne doivent plus utiliser de mots de passe.
Je l'ai fait en exécutant cette commande, juste après l'installation:
$ Sudo mysql_secure_installation
À la première étape, le mot de passe est vide. Appuyez simplement sur Entrée.
J'ai eu le même problème sur un raapberry pi avec stretch. Ma solution était de créer un nouvel utilisateur avec tous les privilèges en procédant comme 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 nous l'utilisateur "admin" en tant que superutilisateur.
J'espère que cela va aider quelqu'un.
Il suffit d'utiliser Sudo mysql -u root
- c'est tout
Détails: Les versions les plus récentes s'authentifient auprès de mysql à l'aide de l'authentification système. Donc, si vous savez utiliser le système d’exploitation de Sudo, cela suppose que vous êtes également root de la base de données. Vous pouvez le confirmer en émettant Sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Vous devriez voir quelque chose comme ça (peut-être avec auth_socket
dans d'autres distributions)
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+
Utilisez simplement Sudo mysql -u root
et vous serez dans.
Détails: Les versions les plus récentes s'authentifient auprès de mysql à l'aide de l'authentification système. Donc, si vous savez utiliser le système d’exploitation de Sudo, cela suppose que vous êtes également root de la base de données. Vous pouvez le confirmer en émettant Sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Vous devriez voir quelque chose comme ça (peut-être avec auth_socket
dans d'autres distributions)
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+