web-dev-qa-db-fra.com

Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: YES) - Pas de privilèges?

Je reçois continuellement cette erreur.

J'utilise mySQL Workbench et, d'après mes conclusions, les privilèges de schéma de root sont nuls. Il n'y a pas de privilèges du tout.

Je rencontre des problèmes sur toutes les plates-formes pour lesquelles mon serveur est utilisé, ce qui est un problème soudain.

[email protected] a apparemment beaucoup d'accès, mais je suis connecté en tant que tel, mais cela n'affecte que localhost de toute façon - localhost n'a pas de privilèges.

J'ai fait quelques choses comme FLUSH HOSTS, FLUSH PRIVILEGES, etc., mais je n'y ai trouvé aucun succès, ni sur Internet.

Comment puis-je récupérer son accès root? Je trouve cela frustrant, car lorsque je regarde autour de moi, les gens s'attendent à ce que vous "ayez accès", mais je n'y ai pas accès, je ne peux donc pas entrer en ligne de commande ou quoi que ce soit et GRANT moi-même rien.

Lorsque je lance SHOW GRANTS FOR root, voici ce que je reçois en retour:

Code d'erreur: 1141. Aucune autorisation de ce type n'a été définie pour l'utilisateur 'root' sur l'hôte '%'.

65
Chase

Utilisez les instructions pour réinitialiser le mot de passe root - mais au lieu de réinitialiser le mot de passe root, nous allons FORCER un enregistrement dans la table mysql.user

Dans le fichier init, utilisez ceci à la place

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
40
Andy Jones

Si vous avez le même problème dans MySql 5.7. +:

Access denied for user 'root'@'localhost'

c'est parce que MySql 5.7 autorise par défaut la connexion avec socket, ce qui signifie que vous vous connectez simplement avec Sudo mysql. Si vous utilisez sql:

SELECT user,authentication_string,plugin,Host FROM mysql.user;

alors vous le verrez:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | Host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Pour autoriser la connexion avec root et le mot de passe, mettez à jour les valeurs du tableau avec la commande suivante:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

Ensuite, exécutez à nouveau la commande select et vous verrez qu'elle a changé:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | Host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Et c'est tout. Vous pouvez exécuter ce processus après avoir exécuté et terminé la commande Sudo mysql_secure_installation.

46
KeitelDOG

Il n’a pas aimé mon privilège d’utilisateur alors je l’ai soudé. (in bash << Sudo définir l'utilisateur et le mot de passe) (cela donne le nom d'utilisateur de la racine et ne définit le mot de passe à rien) (Sur Mac)

Sudo mysql -uroot -p
32
Dan Kaiser

Essayez les commandes suivantes

~$ Sudo /etc/init.d/mysql stop
~$ Sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ Sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ Sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> 
23
aashish

pour les personnes qui font face à l'erreur ci-dessous dans mysql version 5.7+ -

Access denied for user 'root'@'localhost' (using password: YES)
  1. Ouvrir un nouveau terminal

  2. Sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rc est arrêté

  3. Sudo mysqld_safe --skip-grant-tables & cela ignorera tous les privilèges de niveau d’octroi et lancera le mysql en mode sans échec Parfois, le processus est bloqué juste à cause de

grep: erreur d'écriture: canal cassé 180102 11:32:28 mysqld_safe Enregistrement dans '/var/log/mysql/error.log'.

Appuyez simplement sur Ctrl + Z ou Ctrl + C pour interrompre et quitter le processus

  1. mysql -u root

Bienvenue sur le moniteur MySQL. Les commandes se terminent par; ou\g. Votre identifiant de connexion MySQL est 2 Version du serveur: 5.7.8-rc MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle et/ou ses filiales. Tous les droits sont réservés.

Oracle est une marque déposée d'Oracle Corporation et/ou de ses filiales. Les autres noms peuvent être des marques de commerce de leurs propriétaires respectifs.

Tapez 'aide'; ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.

  1. mysql> use mysql;

Lecture des informations de table pour compléter les noms de table et de colonne Vous pouvez désactiver cette fonctionnalité pour un démarrage plus rapide avec -A

Base de données modifiée

  1. mysql> update user set authentication_string=password('password') where user='root'; Requête OK, 4 lignes affectées, 1 avertissement (0.03 sec) Lignes alignées: 4 Modifiées: 4 Avertissements: 1

  2. mysql> flush privileges; Requête OK, 0 ligne affectée (0.00 s)

  3. mysql> quit Bye

  4. Sudo /etc/init.d/mysql stop

..180102 11:37:12 mysqld_safe mysqld à partir du fichier pid /var/run/mysqld/mysqld.pid terminé. * MySQL Community Server 5.7.8-rc est arrêté arif @ ubuntu: ~ $ Sudo /etc/init.d/mysql start .. * MySQL Community Server 5.7.8-rc est démarré

  1. mysql -u root -p

    Entrer le mot de passe:

    Bienvenue sur le moniteur MySQL. Les commandes se terminent par; ou\g. Votre identifiant de connexion MySQL est 2 Version du serveur: 5.7.8-rc MySQL Community Server (GPL)

après la version 5.7+ de mysql, le mot de passe de la colonne a été remplacé par le nom authentication_string de la table mysql.user.

espérons que ces étapes aideront n'importe qui, merci.

15
ArifMustafa

Un moyen simple de réinitialiser le mot de passe root sur les systèmes Linux:

Sudo dpkg-reconfigure mysql-server-5.5

Commander d'autres raisons pour l'accès refusé:

https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html

7
Parth mehta

J'ai rencontré ce problème lors de l'installation de Testlink sur le serveur Ubuntu, j'ai suivi ces étapes

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

Maintenant, arrêtez l'instance et recommencez i.e

Sudo /etc/init.d/mysql stop
Sudo /etc/init.d/mysql start
3
Shridhar S Chini

dans mysql 5.7, le champ mot de passe a été remplacé par authentication_string afin que vous fassiez quelque chose comme ceci à la place

update user set authentication_string=PASSWORD("root") where User='root';

Voir ce lien la base de données d’utilisateurs MySQL n’a pas de colonne mot de passe - Installation de MySQL sur OSX

2
PrestonDocks

J'ai travaillé sur l'accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: OUI) pendant plusieurs heures, j'ai trouvé la solution suivante,

The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf

the line was either 
bind-address = 127.0.0.1 
            (or)
bind-address = localhost
            (or)
bind-address = 0.0.0.0

I should prefer that 127.0.0.1

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections
1
Veera Prasad

Le moyen le plus simple de réinitialiser le mot de passe root est le suivant:

  • redémarrez l'option mysqld --skip-grant-tables . Cela permet à quiconque de se connecter sans mot de passe et avec tous les privilèges. Comme cela n’est pas sûr, vous pouvez utiliser --skip-grant-tables avec --skip-networking pour empêcher les clients distants de se connecter.

  • Connectez-vous au serveur mysqld avec cette commande:

  • Shell> mysql Émettez les instructions suivantes dans le client mysql. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.

  • mysql> UPDATE mysql.user SET Mot de passe = PASSWORD ('MyNewPass') -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;

  • Arrêtez le serveur, puis redémarrez-le normalement (sans les options --skip-grant-tables et --skip-networking).

Documentation de Mysql et expérience personnelle:

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html

1
Aneesh Vijendran

J'ai résolu le même problème en exécutant Workbench en tant qu'administrateur.

... Je suppose que c'est à cause des restrictions sur les ordinateurs de l'entreprise, dans mon cas ...

0
Igor Šćepanović

J'ai résolu le même problème en utilisant next SQL et en redémarrant le serveur MySQL:

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';
0
Oleksandr Tsurika

Je ne pense pas que vous deviez échapper au paramètre --init-file:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

devrait être:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt

0
Jordan

Avec moi était le même problème, mais il a été causé, parce que j'utilisais le serveur mysql sur 32 (bit) et le workbench s'exécutait sur la version 64 (bit). le serveur et le plan de travail doivent avoir la même version.

xpress

0
xpress

Essayez les étapes suivantes pour résoudre ce problème:

  1. Ouvrez le terminal/invite de commande et accédez au dossier bin du dossier d’installation de MySQL. Ensuite, exécutez la commande mysqld --console.
  2. Si vous pouvez voir que la ligne 171010 14:58:22 [Note] --secure-file-priv est définie sur NULL. Les opérations liées à l'importation et à l'exportation de données sont désactivées après l'exécution de la commande ci-dessus à partir de l'invite de commande.
  3. Ensuite, vous devez vérifier que la mysqld est bloquée par le Pare-feu Windows ou par un autre programme.
  4. S'il est bloqué par le pare-feu Windows, vous devez le débloquer et enregistrer les paramètres.
  5. Pour débloquer l'application mysqld ou mysql, suivez les étapes ci-dessous:
    1. Allez à la commande Invite et tapez wf.msc pour ouvrir les paramètres du pare-feu.
    2. Cliquez sur Autoriser une application ou une fonctionnalité via le Pare-feu Windows.
    3. Vérifiez que les instances mysqld ou mysqld sont disponibles dans la liste, cochez la case correspondant au domaine, public et privé, puis enregistrez les paramètres.
  6. Retournez dans le dossier bin et relancez la commande à l'étape 1.
  7. Cela devrait fonctionner correctement et ne montrer aucune erreur.

Il devrait être possible d’exécuter la console MySQL sans aucun problème maintenant!

0
srinivas krithvik

pour le problème ci-dessus, votre mot de passe dans le système doit correspondre au mot de passe que vous avez entré dans le programme car, lorsque vous exécutez le programme, il vérifie le mot de passe du système comme vous l'avez indiqué en tant qu'utilisateur root, ce qui vous donne une erreur et l'enregistrement n'est pas supprimé de la base de données.

import Java.sql.DriverManager;
import Java.sql.Connection;
import Java.sql.Statement;
import Java.sql.ResultSet;
class Delete
{
    public static void main(String []k)
    {
        String url="jdbc:mysql://localhost:3306/student";

        String user="root";
        String pass="jacob234";
        try
        {
            Connection myConnection=DriverManager.getConnection(url,user,pass);
            Statement myStatement=myConnection.createStatement();
            String deleteQuery="delete from students where id=2";
            myStatement.executeUpdate(deleteQuery);
            System.out.println("delete completed");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}

Conservez le mot de passe de votre système sous le nom jacob234, puis exécutez le code.

0
Koyel Sharma

Pour moi, j'utilisais MYSQLWorkbench et le port était 3306 MAMP en utilisant 8889

0
Abdullah Tahan