Accès MySQL refusé pour l'utilisateur 'root' @ 'localhost'

24

Sur mon serveur, chaque fois que j'essaie d'accéder à MySQL, j'obtiens l'erreur:

Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NO)

quand j'essaye mysqladmin -u root -p passwordje reçois

Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)

Comment puis-je accéder à MySQL sur mon serveur Ubuntu 12.04?

user253867
la source
1
Essayez d'éviter de taper votre mot de passe comme paramètre sur la ligne de commande, les autres utilisateurs peuvent le trouver via les listes de processus. Il vaut mieux le saisir directement dans le programme ou utiliser une clé
Amias
La syntaxe -p passwordest erronée, elle doit l'être -ppasswordmais n'est pas recommandée. Plus d'infos: stackoverflow.com/questions/5131931/…
Melebius
Consultez cette page pour les causes possibles de cette erreur et les solutions de contournement pour corriger cette erreur. rathishkumar.in/2017/04/… . Cela peut vous aider.
rathishDBA

Réponses:

12

Si vous exécutez n localhost, tapez simplement la commande ci-dessous dans le terminal:

mysql -u root -p

Si vous utilisez un serveur externe, entrez également l'adresse IP de l'hôte (xxx.xxx.xxx.xxx):

mysql -hxxx.xxx.xxx.xxx -uroot -p

Vous serez invité à saisir votre mot de passe, à le saisir et vous pourrez accéder à votre invite MySQL.

Vous pouvez également consulter cette réponse pour savoir comment réinitialiser votre mot de passe MySQL.

Parto
la source
je suis entré mais je ne sais toujours pas comment changer ou choisi un mot de passe
user253867
Dans la réponse que j'ai liée, vous devez remplacer le 5.xà la fin par la version du serveur MySQL que vous utilisez. J'utilise 5.5 donc ma commande serasudo dpkg-reconfigure mysql-server-5.5
Parto
9
donc, le problème est que OP voit Access denied for user 'root'@'localhost'. Vous proposez d'appeler mysql -u root -p. Le résultat de cette commande est: Access denied for user 'root'@'localhost'.
phil294
5
sudo mysql -u root -pfonctionne pour moi, mais mysql -u root -pne fonctionne pas
Ivan Black
7

J'obtiens les mêmes symptômes lorsque je mets à jour, mais pour moi le correctif (après avoir tué mysql et redémarré avec --skip-grant-tables pour entrer) est d'exécuter

update mysql.user set plugin = '';

Le processus de mise à jour aime définir cette colonne sur "unix_socket". Je ne sais pas ce que cela est censé accomplir, mais pour moi ça casse tout.

dogtato
la source
Cela résout mon problème sur Ubuntu 16 LTS, après avoir tout essayé .. autorisations, groupe d'utilisateurs. Merci.
onalbi
oui, j'avais exécuté un script de renforcement et il a changé le plugin pour mysql_socketque tout ce que je configurais PASSWORD('xxxxxx')ne fonctionne pas.
TheVillageIdiot
4

Définir un mot de passe pour mysql

sudo dpkg-reconfigure mysql-server-5.x

Ouvrez maintenant le terminal et tapez

mysql -uroot -p

donnez le mot de passe et appuyez sur enter

Conor
la source
4

J'ai résolu mon problème avec ceci:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

Soyez extrêmement responsable. Avec cette solution, vous supprimez le serveur MySql et toutes ses données.

Andrew Zolotarev
la source
Ça ne marche pas pour moi.
Ivan Black
!! Soyez extrêmement responsable. Avec cette solution, vous supprimez le serveur MySql et toutes ses données.
Matiss Jurgelis
4

Comme Ulrich Metzger, après avoir mis à niveau ma machine vers Ubuntu 16.04 et Mysql-server-5.7, je n'ai pas pu me connecter avec root car la plugincolonne a changé.

Mon problème n'a pas été résolu avec sudo dpkg-reconfigure mysql-server-5.7+ retrait + purge + nettoyage.

J'ai dû arrêter le service mysql:

# sudo service mysql stop

Redémarrez ensuite le démon mysql avec l' --no-grant-tablesoption:

# sudo mysqld_safe --no-grant-tables &

Ensuite, dans un autre terminal, entrez dans la console mysql (qui n'a plus besoin d'authentification) avec la commande mysql, et mettez à jour le mot de passe et les colonnes du plugin via une mise à jour SQL:

UPDATE mysql.user 
  SET authentication_string=PASSWORD(''), 
      plugin='mysql_native_password'
WHERE User='root' AND Host='localhost';

Enfin, tuez la mysqld_safecommande, redémarrez le service mysql et connectez-vous normalement à mysql:

# sudo service mysql start
# mysql
Kuuak
la source
2

Après la mise à niveau d'ubuntu 14.4LTS vers 16.4LTS, l'utilisateur root mysql ne pouvait plus se connecter en raison d'une entrée incorrecte dans la colonne de plug-in de la table utilisateur mysql. La mise à niveau définit la valeur du plugin pour l'utilisateur root @ localhost sur auth_socket mais l'entrée correcte doit être mysql_native_password , si vous avez utilisé le cryptage de mot de passe natif mysql auparavant.

Ulrich Metzger
la source
C'est celui qui a fonctionné pour moi, et semble être à l'origine du problème. Désinstaller et réinstaller ne fera rien pour résoudre le "problème".
SteveFromAccounting