Accès refusé pour l’utilisateur ‘root’ @ ‘localhost’ (en utilisant le mot de passe: YES) (Mysql :: Error)

J’ai essayé de déployer une application Web sur mon serveur et je reçois cette exception de firebase database mysql “Accès refusé pour l’utilisateur ‘root’ @ ‘localhost’ (en utilisant le mot de passe: YES) (Mysql :: Error)”

J’ai essayé d’accéder à la firebase database à partir de l’invite de commande en utilisant mysql -u root -p Je suis capable de faire toutes les opérations de firebase database.

quelle est l’erreur

 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3649) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) at com.mysql.jdbc.Connection.(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:620) at java.sql.DriverManager.getConnection(DriverManager.java:200) at com.mpigeon.DbConnection.DbConn(DbConnection.java:26) at com.mpigeon.CheckLoginHome.doGet(CheckLoginHome.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

Vous devez accorder l’access à root à partir de localhost. Consultez cette aide ubuntu

essayez d’utiliser la root comme ..

 mysql -uroot 

alors vous pouvez vérifier différents utilisateur et hôte après vous être connecté en utilisant

 select user,host,password from mysql.user; 

vérifiez que vous mettez un espace vide dans le mot de passe.

J’ai fait face à la même erreur après la mise à niveau du serveur MySQL de la version 5.1.73 vers la version 5.5.45. Il existe un autre moyen de corriger cette erreur.

Dans mon cas, je pouvais me connecter à MySQL en utilisant le mot de passe root mais MySQL refusait activement d’accorder des privilèges à n’importe quel utilisateur.

  1. Se connecter à MySQL en tant que root

     mysql -u root -p 

    puis entrez votre mot de passe root MySQL;

  2. Sélectionner la firebase database;

     use mysql; 
  3. Très probablement, il n’y a qu’un seul enregistrement pour root dans la table mysql.user permettant de se connecter uniquement à partir de localhost (c’était dans mon cas) mais par défaut il devrait y avoir deux enregistrements pour root, un pour localhost et un autre pour 127.0.0.1 ;

  4. Créer un enregistrement supplémentaire pour l’utilisateur root avec Host='127.0.0.1' s’il n’est pas présent;

      SET @s = CONCAT('INSERT INTO mysql.user SELECT ', REPLACE((SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'mysql') ,"Host","'127.0.0.1'"), ' FROM mysql.user WHERE User="root"'); PREPARE stmt FROM @s; EXECUTE stmt; 
  5. De plus, vous pouvez exécuter mysql_upgrade -u -p pour voir si tout va bien.

Mon application utilise Mura CMS et j’ai rencontré ce problème. Cependant, la solution était la non-concordance de mot de passe entre mon serveur local mysql et le mot de passe dans les fichiers de configuration. Dès que je les ai synchronisés, cela a fonctionné.

J’ai résolu ce problème en supprimant les utilisateurs vides créés par MySQL. Je n’ai qu’un utilisateur root et mon propre utilisateur. J’ai supprimé le rest.

Mettre à jour la table utilisateur dans la firebase database mysql . Et définir un mot de passe où il est vide, j’utilisais l’utilisateur root, donc je définir le mot de passe pour l’utilisateur root.

 update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges; 

Et puis à nouveau essayé de ATG CIM en fournissant le mot de passe et cela a fonctionné très bien.

Après mise à jour

http://i.stack.imgur.com/3Lchp.png

J’ai eu ce problème aujourd’hui en installant SugarCRM (un CRM gratuit).

Le système n’a pas pu se connecter à la firebase database à l’aide de l’utilisateur root. Je pouvais définitivement me connecter en tant que root depuis la console … alors quel était le problème?

J’ai découvert que dans ma situation, j’obtenais exactement la même erreur, mais parce que le mot de passe était envoyé à mysql directement à partir des données de $_POST , en d’autres termes, le caractère < de mon mot de passe était envoyé à mysql comme < ce qui signifie que le mot de passe était faux.

Tout le rest n'a pas aidé un peu. La liste des utilisateurs de mysql était correcte, y compris l’utilisateur anonyme (qui apparaît après les entrées root).

J’ai beaucoup cherché sur Google mais je n’ai pas trouvé de réponse définitive à mon problème. J’ai utilisé KeyPass pour générer un mot de passe fort et l’utiliser avec succès sur mysql workbench pour me connecter mais pas depuis la ligne de commande. J’ai donc changé le psw en un simple et cela a fonctionné sur la ligne de commande. J’ai réussi à créer un mot de passe fort capable de se connecter à partir du terminal. Donc, mon conseil est d’essayer avec un mot de passe facile avant d’essayer toutes sortes de choses.

J’exécutais des UT et j’ai commencé à recevoir des messages d’erreur. Je ne suis pas sûr du problème. Mais lorsque j’ai changé mon style de codage dans INTELLIJ en UTF8, il a recommencé à fonctionner.

access refusé pour l’utilisateur ‘root’ @ ‘localhost’ (en utilisant le mot de passe oui) hibernate

c’est mon URL db.url = jdbc: mysql: // localhost: 3306 / somedb? useUnicode = true & connectionCollation = utf8_general_ci & characterSetResults = utf8

De ma réponse ici , j’ai pensé que cela pourrait être utile:

J’ai essayé de nombreuses étapes pour corriger ce problème. Il y a tellement de sources de solutions possibles à ce problème qu’il est difficile de filtrer le sens du non-sens. J’ai finalement trouvé une bonne solution ici :

Étape 1: Identifier la version de la firebase database

 $ mysql --version 

Vous verrez une sortie comme celle-ci avec MySQL:

 $ mysql Ver 14.14 Dissortingb 5.7.16, for Linux (x86_64) using EditLine wrapper 

Ou une sortie comme celle-ci pour MariaDB:

 mysql Ver 15.1 Dissortingb 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1 

Notez la firebase database et la version que vous utilisez, car vous les utiliserez plus tard. Ensuite, vous devez arrêter la firebase database pour pouvoir y accéder manuellement.

Étape 2: arrêt du serveur de firebase database

Pour modifier le mot de passe root, vous devez au préalable arrêter le serveur de firebase database.

Vous pouvez le faire pour MySQL avec:

 $ sudo systemctl stop mysql 

Et pour MariaDB avec:

 $ sudo systemctl stop mariadb 

Étape 3: redémarrage du serveur de firebase database sans vérification des permissions

Si vous exécutez MySQL et MariaDB sans charger d’informations sur les privilèges utilisateur, vous pourrez accéder à la ligne de commande de la firebase database avec les privilèges root sans fournir de mot de passe. Cela vous permettra d’accéder à la firebase database sans le savoir.

Pour ce faire, vous devez empêcher la firebase database de charger les tables d’octroi, qui stockent les informations de privilège utilisateur. Comme il s’agit d’un risque de sécurité, vous devez également ignorer le réseau pour empêcher d’autres clients de se connecter.

Démarrez la firebase database sans charger les tables de droits ou activer la mise en réseau:

 $ sudo mysqld_safe --skip-grant-tables --skip-networking & 

À la fin de cette commande, l’esperluette exécutera ce processus en arrière-plan pour que vous puissiez continuer à utiliser votre terminal.

Vous pouvez maintenant vous connecter à la firebase database en tant qu’utilisateur root, qui ne doit pas demander de mot de passe.

 $ mysql -u root 

Vous verrez immédiatement une invite de shell de firebase database à la place.

Invite MySQL

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 

MariaDB Prompt

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> 

Maintenant que vous avez un access root, vous pouvez changer le mot de passe root.

Étape 4: Modification du mot de passe racine

 mysql> FLUSH PRIVILEGES; 

Nous pouvons maintenant changer le mot de passe root.

Pour MySQL 5.7.6 et versions ultérieures, ainsi que pour MariaDB 10.1.20 et versions ultérieures , utilisez la commande suivante:

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

Pour MySQL 5.7.5 et versions antérieures , ainsi que pour MariaDB 10.1.20 et versions antérieures , utilisez:

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

Assurez-vous de remplacer new_password par votre nouveau mot de passe de choix.

Remarque: Si la commande ALTER USER ne fonctionne pas, cela indique généralement un problème plus important. Cependant, vous pouvez essayer UPDATE ... SET pour réinitialiser le mot de passe root à la place.

[IMPORTANT] Ceci est la ligne spécifique qui a résolu mon problème particulier:

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

N’oubliez pas de recharger les tables de subvention après cela.

Dans les deux cas, vous devriez voir la confirmation que la commande a été exécutée avec succès.

 Query OK, 0 rows affected (0.00 sec) 

Le mot de passe a été modifié. Vous pouvez maintenant arrêter l’instance manuelle du serveur de firebase database et la redémarrer comme auparavant.

Étape 5: redémarrer le serveur de firebase database normalement

Le didacticiel aborde d’autres étapes pour redémarrer la firebase database, mais la seule chose que j’ai utilisée est la suivante:

Pour MySQL, utilisez: $ sudo systemctl start mysql

Pour MariaDB, utilisez:

 $ sudo systemctl start mariadb 

Vous pouvez maintenant confirmer que le nouveau mot de passe a été correctement appliqué en exécutant:

 $ mysql -u root -p 

La commande devrait maintenant demander le nouveau mot de passe atsortingbué. Entrez-le et vous devriez avoir access à l’invite de la firebase database comme prévu.

Conclusion

Vous avez maintenant un access administratif au serveur MySQL ou MariaDB restauré. Assurez-vous que le nouveau mot de passe root que vous choisissez est solide et sécurisé et conservez-le en lieu sûr.

Mettre à jour le mot de passe vide dans la table mysql.user de mysql

 use mysql; select host,user,password from mysql.user; update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges;