Je travaille sur Xubuntu 15.04. J'ai déjà installé le 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 qu'on m'ait demandé le mot de passe. Lorsque j'essaie de me connecter sans mot de passe (ou mot de passe vide), j'obtiens l' Access denied for user 'root'@'localhost'
erreur. J'ai essayé de désinstaller complètement le package par
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' mysqld --skip-grant-tables
approche de
mysql pour réparer l'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 que je pourrais essayer?
Réponses:
Vous devez réinitialiser le mot de passe. donc pour ça
la source
plugin: auth_socket
est activé par défaut. En d'autres termes, il n'est pas nécessaire d'utiliser--skip-grant-tables
comme cela aurait été nécessaire dans les versions antérieures de MySQL. (Aussi, techniquement, cette mesure ne consiste pas à "réinitialiser le mot de passe"; elle désactive un plugin.)L'idée avec la nouvelle configuration est que vous ne devriez pas du tout utiliser de mots de passe. Voir Plug - in d'authentification UNIX_SOCKET pour plus de 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:
Donc, si vous désactivez ce plug-in pour root et définissez un mot de passe, le travail cron quotidien sera interrompu car il suppose qu'il se connectera en tant que root sans mot de passe, mais avec le plug-in.
Plus tard, il dit:
Il semble donc que les mots de passe ne devraient plus être utilisés par les applications.
la source
"So if you disable that plug-in for root and set a password, the daily cron job will break as it's assuming it will log in as root without a password..."
implication non évidente du plug-in d'authentification UNIX_SOCKET en cours d'activation (qui est maintenant la valeur par défaut) est que sa capacité à s'authentifier en tant qu'utilisateur de la base de données racine avec un mot de passe est désactivée. Nulle part sur mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin n'est mentionnée cette limitation considérable. En conséquence, il est impossible de se connecter en tant que root, par exemple via SSH.J'ai résolu le problème suite à la réponse de ce post:
Impossible de réinitialiser le mot de passe racine MySQL (MariaDB)
Il faut changer le champ du plugin de mysql.user pour toutes les racines en une chaîne vide.
la source
Je l'ai fait en exécutant cette commande, juste après l'installation:
À la première étape, le mot de passe est vide, appuyez simplement sur Entrée.
la source
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:
Maintenant, je peux me connecter et nous utiliser "admin" en tant que superutilisateur.
J'espère que cela va aider quelqu'un.
la source
Utilisez simplement
sudo mysql -u root
- c'est toutDétails: Les versions plus récentes s'authentifient auprès de mysql à l'aide de l'authentification système. Donc, si vous pouvez utiliser sudo sur le système d'exploitation, cela suppose que vous êtes également root db. 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 avecauth_socket
dans d'autres distributions)la source