192 votes

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 alors que je n'ai pas d'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

3 votes

Vous devez vous connecter en tant qu'utilisateur ayant des autorisations. Au moins root devrait avoir été créé lorsque vous avez installé MySQL.

0 votes

Pendant l'installation, il m'est demandé de définir un mot de passe et je l'ai défini comme étant Root.

11 votes

Vous devez vous connecter en tant que Root - par exemple, en exécutant mysql -u root -p . Vous aurez alors toutes les permissions sur le serveur de base de données et vous pourrez créer d'autres utilisateurs.

234voto

Nowhy Points 1014

Non, vous devez exécuter mysql -u root -p dans bash, et non à la ligne de commande MySQL. Si vous êtes dans mysql, vous pouvez quitter en tapant quitter .

0 votes

Comment puis-je aller à bash ? J'ai eu des problèmes pour installer mysql voir ici superuser.com/questions/377679/ Je sais juste que c'est en ligne de commande

8 votes

Utilisez 'quit' pour sortir de mysql, et vous serez dans bash.

28 votes

Pour info, par défaut, le mot de passe est vide

55voto

soleshoe Points 373

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 invoquer le client MySQL :

mysql -h localhost -u root -p

2 votes

Celui-ci a fonctionné pour moi, il fonctionnait bien au début et a soudainement cessé de fonctionner un jour. Avez-vous une idée de la raison pour laquelle cela se produit ?

0 votes

@soleshoe je reçois l'erreur : sudo : mysqladmin : command not found please help me what can I do ?? mysql is alreay running in System Preference.

0 votes

J'obtiens : mysqladmin : Can't turn off logging ; error : 'Access denied ; you need (at least one of) the SUPER privilege(s) for this operation' (Accès refusé ; vous avez besoin d'au moins un des privilèges SUPER pour cette opération).

32voto

Lefteris E Points 1523

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

Pour voir quel utilisateur vous êtes, et quelles sont les autorisations dont vous disposez :

select user(), current_user();

Pour supprimer l'embêtant utilisateur anonyme :

drop user ''@'localhost';

2 votes

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 ?

3 votes

@Leftteris hi j'obtiens cette erreur : Access denied ; you need (at least one of) the CREATE USER privilege(s) for this operation When i try to drop user ''@'localhost' ;

0 votes

+-----------------+----------------+ | user() | current_user() | +-----------------+----------------+ | fantomx1@localhost | @localhost | +-----------------+----------------+ | thx, j'ai obtenu ceci, quand l'utilisateur anonyme existant, je pouvais me connecter avec n'importe quel utilisateur existant sans mot de passe, même s'ils avaient un mot de passe mais que leur mot de passe ne fonctionnait pas, mais qu'ils n'avaient pas de privilèges, ou même avec n'importe quel utilisateur fictif 'sdasdsa', mais l'utilisateur actuel était toujours anonyme, après l'avoir supprimé, cela a commencé à fonctionner.

11voto

Ray Points 41

Vous pouvez essayer la commande de connexion complète :

mysql -h host -u root -p 

où l'hôte serait 127.0.0.1 .

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

Utilisation de mysql -u root -p me permet de faire beaucoup de recherches dans les bases de données, mais refuse toute création de base de données en raison d'un paramètre de chemin.

6voto

fabiog Points 37

Tout d'abord, si vous n'êtes pas familier avec la ligne de commande, essayez d'utiliser phpmyadmin depuis votre navigateur web. Cela vous permettra de vous assurer que vous avez bien créé une base de données mysql et un nom d'utilisateur.

C'est ainsi que 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

1 votes

-p est pour le mot de passe et vous l'utilisez pour passer le nom de la base de données. De plus, pour le mot de passe, il y a ne devrait pas soit un espace entre -p et le mot de passe réel. Utilisez -D pour se connecter à une base de données spécifique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X