ERREUR 1044 (42000): accès refusé pour l'utilisateur '' @ 'localhost' à la base de données 'db'

164

Je veux commencer à écrire des requêtes dans MySQL.

show grants spectacles:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Je n'ai pas d'identifiant d'utilisateur mais quand je veux créer un utilisateur, je n'ai pas de privilèges, je ne sais pas non plus comment créer des privilèges quand même je n'ai pas un utilisateur!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

J'ai essayé de me connecter en tant que root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1
Nickool
la source
3
Vous devez vous connecter en tant qu'utilisateur avec des autorisations. Au moins rootaurait dû être créé lorsque vous avez installé MySQL.
derobert
lors de l'installation, il me dit de définir le mot de passe et je le définis sur root, que puis-je faire?
Nickool
9
Vous devez vous connecter en tant que root, par exemple en exécutant mysql -u root -p. Ensuite, vous aurez toutes les autorisations sur le serveur de base de données et vous pourrez créer d'autres utilisateurs.
derobert
lorsque vous vous connectez à l'aide de la ligne de commande, procédez comme suit pour vous connecter en tant que root: mysql -u root -p
Travis
1
@nikparsa: Non, vous exécuteriez cela au lieu de «mysql» - à partir de l'invite du shell, pas à l'invite mysql.
derobert

Réponses:

220

Non, vous devez exécuter mysql -u root -pdans bash, pas sur la ligne de commande MySQL. Si vous êtes dans mysql, vous pouvez quitter en tapant exit .

Non pourquoi
la source
Comment puis-je aller à bash? J'ai eu des problèmes pour installer mysql voir ici superuser.com/questions/377679/... Je sais juste abt en ligne de commande
Nickool
6
utilisez 'quit' pour quitter le mysql, alors vous serez dans bash
Nowhy
23
FYI par défaut, le mot de passe est vide
bigpotato
Et si j'utilise Windows?
PHPFan
quitter ou quitter ne fonctionne pas pour moi, veuillez fournir un autre moyen. Je suis sous Windows 10
Metin Dagcilar
46

Vous devrez peut-être configurer un compte root pour votre base de données MySQL:

Dans le type de terminal:

mysqladmin -u root password 'root password goes here'

Et puis pour appeler le client MySQL:

mysql -h localhost -u root -p
soleshoe
la source
1
Celui-ci a fonctionné pour moi, il fonctionnait bien au début, puis a soudainement cessé de fonctionner un jour. Une idée, pourquoi cela se produit-il en premier lieu?
mu 無
@soleshoe im obtenant l'erreur: sudo: mysqladmin: commande non trouvée s'il vous plaît aidez-moi que puis-je faire ?? mysql est déjà en cours d'exécution dans les préférences système.
Hitarth
29

J'ai été amené ici par un problème différent. Chaque fois que j'ai essayé de me connecter, j'ai reçu ce message car au lieu de m'authentifier correctement, je me suis connecté en tant qu'utilisateur anonyme. La solution à mon problème était:

Pour voir quel utilisateur vous êtes et dont vous disposez des autorisations:

select user(), current_user();

Pour supprimer l'utilisateur anonyme embêtant:

drop user ''@'localhost';
Lefteris E
la source
1
Cela a résolu le problème pour moi même si j'utilisais "mysql -u username -p". Très étrange: user () était mon nom d'utilisateur, mais current_user () était localhost ... je ne sais pas pourquoi?
ethanpil le
2
@Leftteris hi .. je reçois cette erreur: Accès refusé; vous avez besoin d'au moins un des privilèges CREATE USER pour cette opération Lorsque j'essaye de supprimer l'utilisateur '' @ 'localhost';
Hitarth
15

C'est quelque chose à voir avec les autorisations des utilisateurs. Donner des subventions appropriées résoudra ce problème.

Étape [1]: Ouvrez le terminal et exécutez cette commande

$ mysql -uroot -p

Sortie [1]: Cela devrait vous donner l'invite mysql ci-dessous

entrez la description de l'image ici

Étape 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Syntaxe:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

Remarque:

  • le nom d'hôte peut être l'adresse IP, localhost, 127.0.0.1
  • Dans database_name/ table_name, * signifie toutes les bases de données
  • Dans hostname, pour spécifier tous les hôtes, utilisez '%'

Étape [3]: Sortez de l'invite mysql actuelle en entrant quit/ exitcommand ou en appuyant sur Ctrl+D.

Étape [4]: ​​Connectez-vous à votre nouvel utilisateur

$ mysql -uparsa -pyour_password

Étape [5]: créer la base de données

mysql> create database `database_name`;
theBuzzyCoder
la source
quand CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';j'obtiens là l'erreur: ERREUR 1227 (42000): Accès refusé; vous avez besoin d'au moins un des privilèges CREATE USER pour cette opération
avion
Vous êtes-vous connecté au client mysql en utilisant l'utilisateur root
theBuzzyCoder
9

Vous voudrez peut-être essayer la commande de connexion complète:

mysql -h host -u root -p 

où serait l'hôte 127.0.0.1.

Faites cela juste pour vous assurer que la coopération existe.

L'utilisation mysql -u root -pme permet de faire beaucoup de recherches dans la base de données, mais refuse toute création de base de données en raison d'un paramètre de chemin.

Rayon
la source
6

Tout d'abord, si vous n'êtes pas familier avec la ligne de commande, essayez d'utiliser phpmyadmin à partir de votre navigateur Web. Cela garantira que vous avez réellement créé une base de données mysql et un nom d'utilisateur.

Voici comment vous vous connectez à partir de la ligne de commande (bash):

mysql -h hostname -u username -p database_name

Par exemple:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
fabiog
la source
1
-pest pour le mot de passe et vous l'utilisez pour transmettre le nom de la base de données. De plus, pour le mot de passe, il ne devrait pas y avoir d'espace b / w -pet le mot de passe réel. Utilisez -Dpour vous connecter à une base de données spécifique.
sv.
5

Si vous êtes dans un MySQLshell, quittez-le en tapant exit , ce qui vous ramènera à l'invite de commande.

Maintenant, commencez MySQLpar utiliser exactement la commande suivante:

sudo mysql -u root -p

Si votre nom d'utilisateur est autre que root, remplacez 'root' dans la commande ci-dessus par votre nom d'utilisateur:

sudo mysql -u <your-user-name> -p

Il vous demandera ensuite le MySQLcompte / mot de passe, et vous MySQLn'afficherez alors aucun problème de privilège d'accès.

Kshitij Mittal
la source
après avoir entré le mot de passe, j'obtiens "sudo: mysql: commande non trouvée" S'il vous plaît aidez-moi à ce sujet
Hitarth
ça ne devrait pas être "sudo:", ça devrait être "sudo" ... Si ce n'est pas une faute de frappe, je pense que c'est le problème.
Kshitij Mittal
2

@Nickparsa… vous avez 2 problèmes:

1). mysql -uroot -p doit être tapé dans bash (également appelé votre terminal) et non dans la ligne de commande MySQL. Vous corrigez cette erreur en tapant

exit

dans votre ligne de commande MySQL. Vous êtes maintenant de retour dans votre ligne de commande bash / terminal.

2). Vous avez une erreur de syntaxe:

mysql -uroot -p; 

le point-virgule devant -p doit disparaître. La syntaxe correcte est:

mysql -uroot -p

tapez la syntaxe correcte dans votre ligne de commande bash. Entrez un mot de passe si vous en avez un; Sinon, appuyez simplement sur le bouton Entrée. Vous devriez obtenir une réponse similaire à celle-ci: entrez la description de l'image ici

J'espère que cela t'aides!

Uzzar
la source
Salut, j'ai eu l'écran ci-dessous directement après le feu de cette recommandation. / usr / local / mysql / bin / mysql mais après cela, lorsque j'essaie de créer une base de données en utilisant "CREATE DATABASE books;" j'obtiens une erreur: ERROR 1044 (42000): Accès refusé pour l'utilisateur '' @ 'localhost' to database ' livres 's'il vous plaît aidez-moi
Hitarth
0

La plupart des développeurs se connectent au serveur (je suppose que vous avez un nom d'utilisateur et un mot de passe pour la base de données mysql), puis à partir de Bash, ils basculent pour mysql> promptutiliser la commande ci-dessous (qui ne fonctionne pas

mysql -h localhost -u root -p

Ce qui doit être fait est d'utiliser la commande ci-dessus dans l'invite bash -> ce faisant, il vous demandera le mot de passe s'il est donné, il passera directement à l'invite mysql et

puis base de données, la table peut être créée une par une

J'ai fait face à une impasse similaire, alors partageant l'expérience

Devrath
la source
0

J'ai eu la commande correcte par réponses ci-dessus, ce que j'ai manqué était sur le Workbench, où nous mentionnons 'Limiter la connectivité de l'hôte' pour l'utilisateur, il par défaut à "%" - changez cela en "localhost" et il se connecte bien par la suite!

killjoy
la source