web-dev-qa-db-fra.com

ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: YES)

Je suis un ingénieur en électricité qui joue principalement avec le système d'alimentation au lieu de programmer. Récemment, je suivais un manuel pour installer une suite logicielle sur Ubuntu. Je n'ai aucune connaissance sur mySQL du tout, en fait. J'ai effectué les installations suivantes sur mon Ubuntu.

Sudo apt-get update
Sudo apt-get install mysql-server-5.5
Sudo apt-get install mysql-client-5.5
Sudo apt-get install mysql-common
Sudo apt-get install glade
Sudo apt-get install ntp

Alors je fais

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

J'ai fini avec le message d'erreur suivant.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Comment puis-je le réparer et continuer?

129
Sibbs Gambling

Note: Pour MySQL 5.7+ veuillez voir réponse de @Lahiru à cette question. Cela contient des informations plus actuelles.

Pour MySQL <5.7:

Le mot de passe root par défaut est vide (c'est-à-dire une chaîne vide) et non pas root. Vous pouvez donc simplement vous connecter en tant que:

mysql -u root

Vous devriez évidemment changer votre mot de passe root après l'installation

mysqladmin -u root password [newpassword]

Dans la plupart des cas, vous devez également configurer des comptes utilisateur individuels avant de travailler également de manière intensive avec la base de données.

119
Mike Brant

J'ai pu résoudre ce problème en exécutant cette déclaration

Sudo dpkg-reconfigure mysql-server-5.5

Ce qui changera le mot de passe root.

111
Divz

Vous devez réinitialiser le mot de passe! étapes pour mac osx (testé et fonctionnel) et ubuntu

Arrêtez MySQL en utilisant

Sudo service mysql stop

ou

$ Sudo /usr/local/mysql/support-files/mysql.server stop

Démarrez-le en mode sans échec:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

(la ligne ci-dessus est la commande entière)

Ce sera une commande en cours jusqu'à la fin du processus, ouvrez une autre fenêtre Shell/terminal, connectez-vous sans mot de passe

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Selon le commentaire de @ IberoMedia, pour les versions plus récentes de MySQL, le champ s'appelle authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Démarrez MySQL en utilisant:

Sudo service mysql start

ou

Sudo /usr/local/mysql/support-files/mysql.server start

votre nouveau mot de passe est "mot de passe".

57
tk_

si le problème persiste, essayez de forcer le changement de laissez-passer

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Configurez le nouveau mot de passe de l'utilisateur root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Arrêtez le serveur MySQL:

/etc/init.d/mysql stop

Démarrez le serveur MySQL et testez-le:

mysql -u root -p
28
Yasin Hassanien

Lors du démarrage initial du serveur, les événements suivants se produisent, étant donné que le répertoire de données du serveur est vide:

  • Le serveur est initialisé.
  • Le certificat SSL et les fichiers de clé sont générés dans le répertoire de données.
  • Le plugin validate_password est installé et activé.
  • Le compte superutilisateur 'root' @ 'localhost' est créé. Le mot de passe du superutilisateur est défini et stocké dans le fichier journal des erreurs. 

Pour le révéler, utilisez la commande suivante:

Shell> Sudo grep 'temporary password' /var/log/mysqld.log

Modifiez le mot de passe root le plus rapidement possible en vous connectant avec le mot de passe temporaire généré et définissez un mot de passe personnalisé pour le compte superutilisateur:

Shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
19
Lahiru

Je sais que c'est une vieille question mais je pense que cela pourrait aider quelqu'un. J'ai eu récemment le même problème mais, dans mon cas, je me souviens très bien de mon mot de passe, mais il continuait à me donner la même erreur. J'ai essayé tellement de solutions mais aucune n'a encore aidé alors j'ai essayé cette 

mysql -u root -p 

après quoi il vous demande un mot de passe comme celui-ci

Enter password: 

et puis j'ai tapé le mot de passe que j'ai utilisé. C'est tout

16
XY-JOE

Cela se produit lorsque votre mot de passe est manquant.

Étapes pour changer le mot de passe quand vous avez oublié:

  1. Arrêtez le serveur MySQL (sous Linux):

    Sudo systemctl stop mysql
    
  2. Démarrez la base de données sans charger les tables de subventions ni activer la mise en réseau:

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    La perluète à la fin de cette commande fera exécuter ce processus dans le
    background afin que vous puissiez continuer à utiliser votre terminal et exécuter # mysql -u root, il ne vous demandera pas de mot de passe.

    Si vous obtenez une erreur comme ci-dessous:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Répertoire '/ var/run/mysqld' pour UNIX
    Le fichier de socket n'existe pas . mysql -u racine ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local via socket
    '/ var/run/mysqld/mysqld.sock' (2) [1] + sortie 1 

  3. Créez le répertoire de service MySQL.

    Sudo mkdir /var/run/mysqld
    

    Donnez à l'utilisateur MySQL l'autorisation d'écrire dans le répertoire de service.

    Sudo chown mysql: /var/run/mysqld
    
  4. Exécutez la même commande à l'étape 2 pour exécuter mysql en arrière-plan.

  5. Exécutez mysql -u root, vous obtiendrez la console mysql sans entrer de mot de passe. 

    Exécuter ces commandes

    FLUSH PRIVILEGES;
    

    Pour MySQL 5.7.6 et plus récent

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    Pour MySQL 5.7.5 et plus ancien

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    

    Si la commande ALTER USER ne fonctionne pas, utilisez:

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

Maintenant sortir

  1. Pour arrêter l'instance démarrée manuellement

    Sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Redémarrer mysql

    Sudo systemctl start mysql
    
15
Sameer Choudhary

J'utilise Ubuntu-16.04: MySQL installé - 5.7 . J'ai eu le même problème: Login refusé pour l'utilisateur root.

Essayé les étapes ci-dessous:

  1. dpkg --get-selections | grep mysql (pour obtenir la version de mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Sans -p cela ne vous invite pas à demander un mot de passe. Une fois que vous êtes dans, vous pouvez créer un utilisateur avec un mot de passe en procédant comme suit:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Quittez à partir de la racine et connectez-vous à partir de la précédente.

mysql -u <your_new_username> -p

Pour une raison quelconque, le simple fait de taper mysql ne fonctionne pas. AT ALL. Je suggère de prendre l'habitude d'utiliser mysql -u <name> -p.

10
Nikhil Rushmith

Je suis tombé sur ce problème très agaçant et j'ai trouvé de nombreuses réponses qui ne fonctionnaient pas. La meilleure solution que j'ai trouvée était de désinstaller complètement mysql et de le réinstaller. Lors de la réinstallation, vous définissez un mot de passe root, ce qui corrige le problème.


Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

J'ai trouvé ce code ailleurs alors je ne prends aucun crédit pour cela. Mais cela fonctionne . Pour installer mysql après sa désinstallation, je pense que Digital Ocean a un bon tutoriel à ce sujet. Commander mon Gist pour cela .
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

Veuillez lire la documentation officielle: Mysql: Comment réinitialiser le mot de passe root

Si vous avez accès au terminal: 

MySQL 5.7.6 et versions ultérieures:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 et versions antérieures:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
5
d.danailov

J'utilise mysql-5.7.12-osx10.11-x86_64.dmg sous Mac OSX

Le processus d'installation configure automatiquement un mot de passe temporaire pour l'utilisateur root. Vous devriez enregistrer le mot de passe. Le mot de passe ne peut pas être récupéré. 

Suivez les instructions

  1. Aller au cd /usr/local/mysql/bin/
  2. Entrez le mot de passe temporaire (qui ressemblerait à "tsO07JF1 => 3")
  3. Vous devriez obtenir mysql> Invite. 
  4. Exécuter, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); Si vous souhaitez définir votre mot de passe: "root", la commande serait alors, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Exécuter ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Exécuter exit
  7. Exécuter ./mysql -u root -p
  8. Tapez votre mot de passe. Dans mon cas, je taperais "root" (sans citation)
  9. C'est tout. 

Pour plus de commodité, vous devriez ajouter "/usr/local/mysql/bin" à votre PATH

Maintenant, où que vous soyez, vous pouvez taper ./mysql -u root -p puis taper le mot de passe et vous obtiendrez mysql> Prompt. 

J'espère que ça aide. 

3
tausiq

La réponse peut sembler stupide, mais après avoir perdu du temps, voici comment je me suis débrouillé

mysql -u root -p

J'ai eu le message d'erreur

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Même si je tapais le mot de passe correct (le mot de passe temporaire que vous avez obtenu lors de la première installation de mysql)

J'ai tout compris quand j'ai tapé le mot de passe alors que l'invite du mot de passe clignotait

3
Amit Kumar

si le problème persiste, essayez de forcer le changement de laissez-passer

Arrêtez le serveur MySQL (sous Linux):

/etc/init.d/mysql stop

Arrêtez le serveur MySQL (sous Mac OS X):

mysql.server stop

Démarrer le démon mysqld_safe avec --skip-grant-tables

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

Configurez le nouveau mot de passe de l'utilisateur root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Arrêtez le serveur MySQL (sous Linux):

/etc/init.d/mysql stop

Arrêtez le serveur MySQL (sous Mac OS X):

mysql.server stop

Démarrez le service serveur MySQL et testez la connexion par root:

mysql -u root -p
2
Max Yao

il suffit d'entrer le terminal

mysql -u root -p. qu'il vous demandera un mot de passe

1
Vahap Gençdal

Juste une ligne et cela a résolu mon problème.

Sudo dpkg-reconfigure mysql-server-5.5
1
Satyendra Sahani

Dans Ubuntu 16.04 (MySQL version 5.7.13), j'ai pu résoudre le problème en procédant comme suit:

  1. Suivez les instructions de la section B.5.3.2.2 dans Réinitialisation du mot de passe racine: Systèmes Unix et analogues Manuel de référence MySQL 5.7

  2. Quand j'ai essayé #Sudo, mysqld_safe --init-file =/home/me/mysql-init & cela a échoué. L'erreur était dans /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Note] L'exécution de init_file '/ home/me/mysql/mysql-init' a commencé . 2016-08-10T11: 41: 20.422070Z 0 [ERREUR]/usr/sbin/mysqld: Le fichier '/ home/moi/mysql/mysql-init' n'a pas été trouvé (Code d'erreur: 13 - Autorisation refusée) 2016-08-10T11: 41: 20.422096Z 0 [ERREUR] Abandon

La permission de fichier de mysql-init n'était pas le problème, il faut éditer la permission d'apparmor

  1. Édité par #Sudo vi /etc/apparmor.d/usr.sbin.mysqld 

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Ne rechargez #Sudo /etc/init.d/apparmor

  3. Démarrez à nouveau mysqld_safe et passez à l'étape 2 ci-dessus. Vérifiez /var/log/mysql/error.log pour vous assurer qu'il n'y a pas d'erreur et que mysqld est démarré avec succès

  4. Exécutez #mysql -u root -p

    Entrer le mot de passe:

Entrez le mot de passe que vous avez spécifié dans mysql-init. Vous devriez pouvoir vous connecter en tant que root maintenant.

  1. Arrêtez mysqld_safe par #Sudo mysqladmin -u root -p shutdown

  2. Démarrez mysqld de manière normale en #Sudo systemctl démarrez mysql

1
codegen

Cela fonctionnera si vous entrez les commandes dites dans les autres réponses mais que vous obtenez toujours les erreurs suivantes:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  Sudo mysqld_safe --skip-grant-tables

Suivez les commandes ci-dessous, étape par étape, jusqu'à ce que vous réinitialisiez votre mot de passe:

# Stop Your Server First
Sudo service mysql stop

# Make MySQL service directory.
Sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
Sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
Sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -uroot mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its Host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -uroot -p
1
Mehdi

Si vous n'avez pas encore défini de mot de passe, lancez mysql -uroot, cela fonctionne pour moi.

0
ahbon

J'ai eu un problème similaire:

ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)

Mais dans mon cas, la cause était vraiment idiote. J'ai copié la commande à partir d'un document Word. Le problème était qu'un trait d'union ne comportait pas le code 2D ASCII mais le code Unicode E28093.

Fausse route:

mysql -u root –pxxxx

La bonne façon:

mysql -u root -pxxxx

Les deux se ressemblent mais ne se ressemblent pas (essayez, copiez et collez en remplaçant votre mot de passe).

Face à ce type d'erreur, il est recommandé d'essayer de taper la commande au lieu de copier-coller.

0
cesargastonec

Sur Mac, si vous rencontrez un problème pour vous connecter avec le premier mot de passe qui vous a été attribué lors de l’installation, vous pouvez peut-être simplement arrêter le processus mysql puis essayer. 

Donc: 1- lancez la commande suivante pour trouver le PID de mysql:

ps -aef | grep mysql | grep -v grep

2- tuer le processus:

kill -15 [process id] 

Ensuite, vous pouvez vous connecter avec le mot de passe initial en utilisant cette commande:

mysql -uroot -p

Ce qui vous demande d'entrer votre mot de passe. Il suffit d'entrer le mot de passe initial.

0
Maryam Zakani

Par défaut, le mot de passe sera nul. Vous devez donc changer de mot de passe en procédant comme suit.

se connecter à mysql

root # mysql

Utilisez mysql

mysql> update user set password = PASSWORD ('root') où User = 'root'; Enfin, rechargez les privilèges

mysql> privilèges de vidage; mysql> quit

0
Rizwan Basheer

J'ai essayé avec la bonne réponse de @Lahiru, mais je n'ai pas fonctionné avec le serveur MySQL version 8.0.16 (Community) sur macOS Mojave.

Suivez les instructions de Sameer Choudhary ci-dessus et avec quelques ajustements, j'ai été en mesure de changer le mot de passe root et d'activer l'accès root à partir de localhost.

Mise à jour: Tous ces éléments ne sont pas nécessaires si vous installez sous Mac OS sous homebrew: "brew install mysql"

0
cspider

Dans les versions récentes de MySQL, il n'y a pas de password dans la table mysql.user.

Donc, vous devez exécuter ALTER USER. Mettez cette commande d'une ligne dans le fichier. 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Et l'exécuter en tant que fichier init (en tant qu'utilisateur root ou mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Le serveur MySQL doit être arrêté pour démarrer mysqld_safe

De plus, il peut y avoir un problème avec les autorisations apparmor pour charger ce fichier init. Lire la suite ici https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

0