web-dev-qa-db-fra.com

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

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

show grants montre:

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

Je n'ai pas d'identifiant, 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, même si 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
151
Nickool

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

207
Nowhy

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 ensuite, pour appeler le client MySQL:

mysql -h localhost -u root -p
45
soleshoe

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

Pour voir quel utilisateur vous êtes et pour quelles autorisations vous disposez:

select user(), current_user();

Pour supprimer l'utilisateur anonyme embêtant:

drop user ''@'localhost';
28
Lefteris E

Ceci est quelque chose à voir avec les autorisations des utilisateurs. Donner des subventions appropriées va résoudre 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

enter image description here

É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 la commande quit/exit ou appuyez 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`;
10
theBuzzyCoder

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

mysql -h Host -u root -p 

où l'hôte serait 127.0.0.1.

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

Utiliser mysql -u root -p me 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.

8
Ray

Tout d'abord, si vous n'êtes pas familier avec la ligne de commande, essayez d'utiliser phpmyadmin à partir de votre navigateur. Cela vous assurera de créer 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
6
fabiog

Si vous êtes dans MySQL Shell, quittez-le en tapant exit. Cela vous ramènera à l'invite de commande. Maintenant, démarrez mysql en utilisant exactement la commande suivante:

Sudo mysql -u racine -p

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

Sudo mysql -u votre-nom-d'utilisateur -p

Il vous demandera alors le mot de passe mysql-account, et votre mysql ne montrera aucun problème de privilège d'accès à partir de maintenant.

5
Kshitij Mittal

@ Nickparsa… vous avez 2 problèmes:

1). mysql -uroot -p doit être saisi en bash (également appelé votre terminal) et non en 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 la suivante:

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 semblable à celle-ci: enter image description here

J'espère que cela t'aides!

2
Uzzar

si vous voulez démarrer mysql à partir de linux, il est facile de le faire en tapant: mysql -u root -p si vous êtes sous Windows, vous devez être à l'emplacement file.exe mysql.exe à partir du terminal, tapez: mysql -u root -p

1
mohamed laribi

J'avais la commande correcte selon les réponses ci-dessus, ce qui m'a manqué était sur le Workbench, où nous mentionnons 'Limiter la connectivité à partir de l'hôte' pour l'utilisateur; la valeur par défaut est "%" - changez-le en "localhost" et la connexion sera parfaite par la suite!

0
killjoy

La plupart des développeurs Connectez-vous au serveur (je suppose que vous possédez un nom d’utilisateur et un mot de passe pour la base de données mysql). Ensuite, de Bash, ils basculent sur mysql> Prompt puis utilisez la commande ci-dessous (qui ne fonctionne pas. travail

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 un mot de passe s’il est directement transmis à l’invite mysql et

alors la base de données, la table peuvent être créées une à une

J'ai fait face à une impasse similaire pour partager l'expérience

0
Devrath