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.
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 enfalse
dans le fichier config.inc.php .
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Pour qu'il se lise
$cfg['Servers'][$i]['AllowNoPassword'] = false;
Changer utilisateur Hôte deAny
ou%
enlocalhost
dans 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.
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 .
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:
mysql -uroot -pYOUR_ROOT_PASS
use mysql;
UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';
FLUSH PRIVILEGES;
TERMINÉ!! Cela a fonctionné pour moi.
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;
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.
accorde tout sur newdb. * à newuser @ localhost identifié par 'mot de passe';