web-dev-qa-db-fra.com

Impossible de se connecter avec l'utilisateur créé dans mysql

Utiliser cette commande

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

J'essaie de me connecter avec:

 mysql -u brian -ppassword

L'erreur est:

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

Je le fais en tant que root et j'ai essayé de supprimer les privilèges.

J'ai essayé cela avec d'innombrables utilisateurs, mais cela ne semble pas fonctionner. Je peux créer un utilisateur sans mot de passe et la connexion fonctionne. Ligne de commande et de phpmyadmin

Vérifiez également si l'utilisateur était dans mysql.user.

Afficher les subventions pour les spectacles de brian:

| GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
65
Brian G

Vous avez probablement ce problème perpétuel avec MySQL où l’un des utilisateurs par défaut de la table user est '' @ localhost, ce qui finit par refuser à tous les utilisateurs localhost ultérieurement dans la table. Ce que je ferais, c'est mysqldump la base de données mysql et chercherais cette entrée dans la table User; si trouvé, supprimez-le et supprimez les privilèges.

Pour plus de détails, voir https://dev.mysql.com/doc/refman/5.5/fr/connection-access.html .

Il est courant de penser que, pour un nom d'utilisateur donné, toutes les lignes nommant explicitement cet utilisateur sont utilisées en premier lorsque le serveur tente de trouver une correspondance pour la connexion. Ce n'est pas vrai. L'exemple précédent illustre cela, où une connexion de h1.example.net par jeffrey est d'abord comparée non par la ligne contenant «jeffrey» comme valeur de colonne User, mais par la ligne sans nom d'utilisateur. En conséquence, jeffrey est authentifié en tant qu'utilisateur anonyme, même s'il a spécifié un nom d'utilisateur lors de la connexion. 

168
chaos

Ceci est un problème causé par les utilisateurs anonymes. Une fois MySQL installé, je lance toujours 

Shell> mysql_secure_installation 

et sélectionnez pour définir/modifier le mot de passe root, supprimer les utilisateurs anonymes, interdire la connexion à la racine distante, supprimer la base de test. Cela supprimera l'utilisateur anonyme et sécurisera votre installation. Cela devrait également résoudre le problème que vous avez.

40
user2509314
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
20
zinking

Aucune des solutions fournies ici n'a fonctionné. Après de nombreuses erreurs et essais, j'ai réalisé que le mot de passe avait des caractères spéciaux. Changer le mot de passe sans caractères spéciaux a résolu le problème

10
cortopy

Les documents mysql ont ceci à dire: (From http://dev.mysql.com/doc/refman/5.1/en/adding-users.html ):

Deux des comptes ont un nom d'utilisateur de monty et un mot de passe de some_pass. Les deux comptes sont des comptes de superutilisateur avec tous les privilèges nécessaires. Le compte 'monty'@'localhost' ne peut être utilisé que lors de la connexion à partir de l'hôte local. Le compte 'monty'@'%' utilise le caractère générique '%' pour la partie hôte. Il peut donc être utilisé pour se connecter à partir de tout hôte.

Il est nécessaire d’avoir les deux comptes pour monty pour pouvoir se connecter de n'importe où en tant que monty. Sans le compte localhost, le compte d'utilisateur anonyme pour localhost créé par mysql_install_db est prioritaire lorsque monty se connecte à partir du fichier hôte local. Par conséquent, monty serait traité comme un utilisateur anonyme. La raison en est que le compte d'utilisateur anonyme a une valeur de colonne Host plus spécifique que le compte 'monty'@'%' et vient donc plus tôt dans l'ordre de tri de la table utilisateur.

Dans cet esprit, je vous recommanderais de créer un utilisateur 'brian'@'localhost' avec les mêmes privilèges.

3
Russell Silva

Vous avez oublié les citations autour de Brian dans votre déclaration de subvention. Essayez comme ça:

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

2
Asaph

Je viens de créer un compte pour offrir une autre possibilité aux futurs chercheurs:

Cela peut sembler évident aux utilisateurs expérimentés, mais mon mot de passe a été généré de manière aléatoire et contenait un "\". Il m'a fallu un peu de temps avant que je découvre que ce personnage semblait poser problème, ce qui m'empêchait de me connecter.

2
ception

Je pense que "Russell Silva" a raison ...

J'ai créé un utilisateur par

CREATE USER 'username'@'%' PASSWORD='userpassword';

Mais je ne peux pas me connecter à ce compte. La console m'a dit que 

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

J'ai donc créé un utilisateur avec le même nom d'utilisateur, à l'exception du changement de '%' à 'localhost', et j'ai enfin pu me connecter en tant que 'nom d'utilisateur'. C'est assez bizarre pour moi cependant.

1
Chenxiao

Dans mon cas, c'est à moi de cliquer sur "SSL: REQUIRE SSL" (dans phpmyadmin). Quand je l'ai changé en "REQUIRE NONE", je pouvais me connecter.

1
Ari

J'ai eu un problème similaire lors de la tentative de connexion à une base de données Maria exécutant Ubuntu après la mise à niveau vers 17.04. 

La valeur par défaut était d'écouter uniquement sur localhost, 127.0.0.1.

Pour que MySQL/Maria écoute tous les ports et interfaces disponibles, je devais spécifier explicitement bind-address = 0.0.0.0. J'ai ajouté cette ligne à la fin du fichier /etc/mysql/my.cnf, c'est-à-dire.

...
[client-server]

# Import all .cnf files from configuration directory

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
bind-address=0.0.0.0

Ensuite...

Sudo /etc/init.d/mysql restart 
0
theINtoy

Vous pouvez également vous connecter à partir d'un autre hôte, puis l'utilisateur anonyme localhost est ignoré. Vous pouvez le supprimer et supprimer les privilèges suivants:

mysql -u brian -ppassword -h 'other_Host_than_localhost'
0
obotezat