web-dev-qa-db-fra.com

Erreur MySQL # 1133 - Impossible de trouver une ligne correspondante dans la table utilisateur

Impossible de définir le mot de passe d'un utilisateur à l'aide de 3.5.2.2 - phpMyAdmin for 5.5.27 - MySQL . Lorsque vous essayez de définir le mot de passe alors que vous êtes connecté à phpMyAdmin en tant qu'utilisateur, l'erreur suivante s'affiche:

#1133 - Can't find any matching row in the user table

Lorsque vous êtes connecté en tant que root, le message suivant s'affiche correctement.

SET PASSWORD FOR 'user'@'%' = PASSWORD( '***' )

Dans les deux cas, le mot de passe n'est pas défini et reste tel quel, vide.

44
Tumharyyaaden

Il s'avère que l'erreur est vraiment très vague!

1) Le mot de passe était défini lors de la connexion en tant que root, car il mettait à jour le champ utilisateur/mot de passe dans la table des utilisateurs sous MySql.

2) Lors de la connexion en tant qu’utilisateur, le mot de passe ne changeait pas et même s’il en existait un spécifié dans le tableau des utilisateurs dans MySql, le fichier config.inc.php permettait l’authentification sans mot de passe.

Solution:

Changez valeur suivante enfalsedans le fichier config.inc.php .

$cfg['Servers'][$i]['AllowNoPassword'] = true;

Pour qu'il se lise

$cfg['Servers'][$i]['AllowNoPassword'] = false;

Changer utilisateur Hôte deAnyou%enlocalhostdans la table des utilisateurs MySql. Ceci pourrait facilement être réalisé via phpMyAdmin console.

Ces deux modifications m'ont permis de m'authentifier en tant qu'utilisateur avec son mot de passe et d'authentification interdite sans mot de passe. 

Il permettait également à l'utilisateur de changer son mot de passe lorsqu'il était connecté en tant qu'utilisateur.

Il semble que toutes les autorisations et le reste a été corrigé avec ces deux modifications. 

5
Tumharyyaaden

J'ai rencontré cette erreur en utilisant MySQL dans un contexte différent (pas dans phpMyAdmin). Les commandes GRANT et SET PASSWORD ont échoué pour un utilisateur existant particulier, répertorié dans la table mysql.user. Dans mon cas, cela a été corrigé en exécutant

FLUSH PRIVILEGES;

La documentation pour cette commande dit

Recharge les privilèges à partir des tables d'attribution de la base de données mysql.

Le serveur met en cache des informations en mémoire à la suite des instructions GRANT et CREATE USER . Cette mémoire n'est pas libérée par les instructions REVOKE et DROP USER correspondantes, donc pour un serveur qui exécute de nombreuses instances des instructions qui provoquent la mise en cache, il y aura une augmentation de l'utilisation de la mémoire. Cette mémoire en cache peut être libérée avec FLUSH PRIVILEGES.

Apparemment, le cache de la table utilisateur avait atteint un état incohérent, ce qui provoquait ce message d'erreur étrange. Plus d'informations sont disponibles ici .

86
pdg137

J'ai rencontré ce problème, mais dans mon cas, le mot de passe de l'utilisateur 'phpmyadmin' ne correspond pas au contenu de /etc/phpmyadmin/config-db.php

Une fois que j'ai mis à jour le mot de passe de l'utilisateur 'phpmyadmin', l'erreur a disparu.

Ce sont les étapes que j'ai prises:

  1. Connectez-vous à mysql en tant que root: mysql -uroot -pYOUR_ROOT_PASS
  2. Passez à la base de données 'mysql': use mysql;
  3. Mettez à jour le mot de passe de l'utilisateur 'phpmyadmin': UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';
  4. Privilèges de vidage: FLUSH PRIVILEGES;

TERMINÉ!! Cela a fonctionné pour moi.

9
e.thompsy

Cette erreur peut se produire si vous essayez d'octroyer des privilèges à un utilisateur non existant.

Ce que MySQL considère comme un utilisateur non existant n’est pas clair. Mais je soupçonne que MySQL considère qu’un utilisateur existe s’il peut être trouvé par un nom (colonne User) et un hôte (colonne Host) dans la table user.

Si vous tentez d'accorder des privilèges à un utilisateur, vous pouvez le trouver avec son nom (colonne User) mais pas avec son nom et son hôte (colonnes User et Host), sans fournir de mot de passe.

Par exemple, l'instruction suivante déclenche l'erreur:

grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx';

En effet, aucun mot de passe n’ayant été spécifié, MySQL ne peut créer un nouvel utilisateur et tente donc de trouver un utilisateur existant. Mais aucun utilisateur portant le nom myuser et le nom d'hôte xxx.xxx.xxx.xxx ne peut être trouvé dans la table user.

Attendu que fournir un mot de passe permet à l'instruction d'être exécutée avec succès:

grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx' identified by 'mypassword';

Assurez-vous de réutiliser le même mot de passe de cet utilisateur que vous considérez exister, si ce nouvel "utilisateur MySQL" est le même "utilisateur de l'application".

Terminez l'opération en supprimant les privilèges:

flush privileges;
7
Stephane

Si vous utilisez PHPMyAdmin, vous devez être connecté en tant que root pour pouvoir changer le mot de passe root. dans l'utilisateur mettez root que laissez le mot de passe vide que de changer votre mot de passe.

0
user2686848

accorde tout sur newdb. * à newuser @ localhost identifié par 'mot de passe';

0
cmueller