FEHLER 1044 (42000): Zugriff für Benutzer '' @ 'localhost' auf Datenbank 'db' verweigert


164

Ich möchte anfangen, Abfragen in MySQL zu schreiben.

show grants zeigt an:

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

Ich habe keine Benutzer-ID, aber wenn ich einen Benutzer erstellen möchte, habe ich keine Berechtigungen. Außerdem weiß ich nicht, wie ich Berechtigungen erstellen soll, wenn selbst ich keinen Benutzer habe!

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

Ich habe versucht, mich als root anzumelden:

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
Sie müssen sich als Benutzer mit Berechtigungen anmelden. Sollte zumindest rootbei der Installation von MySQL erstellt worden sein.
Derobert

Während der Installation werde ich aufgefordert, das Passwort festzulegen, und ich setze es jetzt auf root. Was kann ich tun?
Nickool

9
Sie müssen sich als root anmelden, z mysql -u root -p. B. durch Ausführen . Dann haben Sie volle Berechtigungen auf dem Datenbankserver und können andere Benutzer erstellen.
Derobert

Wenn Sie sich über die Befehlszeile anmelden, gehen Sie wie folgt vor, um sich als root anzumelden: mysql -u root -p
Travis

1
@nikparsa: Nein, Sie würden das anstelle von 'mysql' ausführen - an der Shell-Eingabeaufforderung, nicht an der mysql-Eingabeaufforderung.
Derobert

Antworten:


219

Nein, Sie sollten mysql -u root -pin Bash ausgeführt werden, nicht in der MySQL-Befehlszeile. Wenn Sie in mysql sind, können Sie durch Eingabe verlassen Ausfahrt .


Wie kann ich zu Bash gehen? Ich hatte Probleme bei der Installation von MySQL. Siehe hier superuser.com/questions/377679/… Ich weiß es nur in der Kommandozeile
Nickool

6
Verwenden Sie 'quit', um das MySQL zu beenden, dann sind Sie in Bash
Nowhy


Was ist, wenn ich Windows verwende?
PHPFan

Beenden oder Beenden funktioniert bei mir nicht, bitte geben Sie einen anderen Weg an. Ich bin auf Windows 10
Metin Dagcilar

46

Möglicherweise müssen Sie ein Root-Konto für Ihre MySQL-Datenbank einrichten:

Im Terminaltyp:

mysqladmin -u root password 'root password goes here'

Und dann, um den MySQL-Client aufzurufen:

mysql -h localhost -u root -p

1
Dieser hat bei mir funktioniert, er hat anfangs gut funktioniert und dann plötzlich eines Tages aufgehört zu arbeiten. Irgendeine Idee, warum das überhaupt passiert?
mu

@soleshoe ich bekomme Fehler: sudo: mysqladmin: Befehl nicht gefunden bitte hilf mir was kann ich tun ?? MySQL wird bereits in den Systemeinstellungen ausgeführt.
Hitarth

29

Ich wurde durch ein anderes Problem hierher gebracht. Wann immer ich versuchte mich anzumelden, bekam ich diese Nachricht, weil ich mich nicht korrekt authentifizierte, sondern als anonymer Benutzer anmeldete. Die Lösung für mein Problem war:

So sehen Sie, welcher Benutzer Sie sind und wessen Berechtigungen Sie haben:

select user(), current_user();

So löschen Sie den nervigen anonymen Benutzer:

drop user ''@'localhost';

1
Dies löste das Problem für mich, obwohl ich "mysql -u Benutzername -p" verwendete. Sehr seltsam: user () war mein Benutzername, aber current_user () war localhost ... weiß nicht warum?
Ethanpil

2
@Leftteris hi .. ich bekomme diesen Fehler: Zugriff verweigert; Sie benötigen (mindestens eines der) CREATE USER-Berechtigungen für diesen Vorgang, wenn ich versuche, den Benutzer '' @ 'localhost' zu löschen.
Hitarth

15

Dies hat etwas mit Benutzerberechtigungen zu tun. Durch die Gewährung angemessener Zuschüsse wird dieses Problem gelöst.

Schritt [1]: Öffnen Sie das Terminal und führen Sie diesen Befehl aus

$ mysql -uroot -p

Ausgabe [1]: Dies sollte Ihnen die unten gezeigte MySQL-Eingabeaufforderung geben

Geben Sie hier die Bildbeschreibung ein

Schritt 2]:

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

Syntax:

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

Hinweis:

  • Hostname kann IP-Adresse, localhost, 127.0.0.1 sein
  • In database_name/ table_namebedeutet * alle Datenbanken
  • Um hostnamealle Hosts anzugeben, verwenden Sie '%'.

Schritt [3]: Verlassen Sie die aktuelle MySQL-Eingabeaufforderung, indem Sie entweder quit/ exitcommand eingeben oder drücken Ctrl+D.

Schritt [4]: ​​Melden Sie sich bei Ihrem neuen Benutzer an

$ mysql -uparsa -pyour_password

Schritt [5]: Erstellen Sie die Datenbank

mysql> create database `database_name`;

Wenn ich CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';dort bin, erhalte ich folgende Fehlermeldung: FEHLER 1227 (42000): Zugriff verweigert; Sie benötigen (mindestens eines) der CREATE USER-Berechtigung (en) für diese Operation
Flugzeug

Haben Sie sich mit Root-Benutzer
theBuzzyCoder

9

Möglicherweise möchten Sie den vollständigen Anmeldebefehl ausprobieren:

mysql -h host -u root -p 

wo Gastgeber wäre 127.0.0.1.

Tun Sie dies nur, um sicherzustellen, dass eine Zusammenarbeit besteht.

Die Verwendung mysql -u root -permöglicht mir eine umfangreiche Datenbanksuche, lehnt jedoch die Erstellung von Datenbanken aufgrund einer Pfadeinstellung ab.


6

Wenn Sie mit der Befehlszeile nicht vertraut sind, versuchen Sie zunächst, phpmyadmin von Ihrem Webbrowser aus zu verwenden. Dadurch wird sichergestellt, dass Sie tatsächlich eine MySQL-Datenbank und einen Benutzernamen erstellt haben.

So stellen Sie eine Verbindung über die Befehlszeile her (Bash):

mysql -h hostname -u username -p database_name

Beispielsweise:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

1
-pist für Passwort und Sie verwenden es, um den Datenbanknamen zu übergeben. Außerdem sollte für das Passwort kein s / w-Leerzeichen -pund das tatsächliche Passwort vorhanden sein. Verwenden Sie -Ddiese Option, um eine Verbindung zu einer bestimmten Datenbank herzustellen.
sv.

5

Wenn Sie sich in einer MySQLShell befinden, beenden Sie diese, indem Sie exit eingeben kehren Sie zur Eingabeaufforderung zurück.

Beginnen Sie nun MySQLmit genau dem folgenden Befehl:

sudo mysql -u root -p

Wenn Ihr Benutzername etwas anderes als root ist, ersetzen Sie 'root' im obigen Befehl durch Ihren Benutzernamen:

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

Anschließend werden Sie nach dem MySQLKonto / Kennwort gefragt , und es MySQLwird kein Problem mit den Zugriffsberechtigungen angezeigt.


Nach Eingabe des Passworts
erhalte

es sollte nicht "sudo:" sein, es sollte "sudo" sein ... Wenn es kein Tippfehler ist, denke ich, ist dies das Problem.
Kshitij Mittal

2

@ Nickparsa… du hast 2 Probleme:

1). mysql -uroot -p sollte in bash (auch als Terminal bezeichnet) eingegeben werden, nicht in der MySQL-Befehlszeile. Sie beheben diesen Fehler durch Eingabe

exit

in Ihrer MySQL-Befehlszeile. Jetzt sind Sie wieder in Ihrer Bash / Terminal-Befehlszeile.

2). Sie haben einen Syntaxfehler:

mysql -uroot -p; 

Das Semikolon vor -p muss gehen. Die richtige Syntax lautet:

mysql -uroot -p

Geben Sie die richtige Syntax in Ihre Bash-Befehlszeile ein. Geben Sie ein Passwort ein, wenn Sie eines eingerichtet haben. Andernfalls drücken Sie einfach die Eingabetaste. Sie sollten eine ähnliche Antwort erhalten: Geben Sie hier die Bildbeschreibung ein

Hoffe das hilft!


Hallo, ich habe den folgenden Bildschirm direkt nach dem Brand erhalten. / usr / local / mysql / bin / mysql, aber danach, wenn ich versuche, eine Datenbank mit "CREATE DATABASE books" zu erstellen, erhalte ich die Fehlermeldung: ERROR 1044 (42000): Zugriff für Benutzer '' @ 'localhost' auf Datenbank verweigert ' Bücher 'bitte hilf mir
Hitarth

0

Die meisten Entwickler melden sich beim Server an (ich gehe davon aus, dass Sie einen Benutzernamen und ein Kennwort für die MySQL-Datenbank haben) und wechseln dann von Bash zu mysql> promptdem folgenden Befehl (der nicht funktioniert)

mysql -h localhost -u root -p

Was getan werden muss, ist den obigen Befehl in der Bash-Eingabeaufforderung zu verwenden -> Wenn Sie dies tun, werden Sie nach dem Passwort gefragt, wenn es direkt zur MySQL-Eingabeaufforderung und weitergeleitet wird

Dann können Datenbank und Tabelle einzeln erstellt werden

Ich war mit einem ähnlichen Stillstand konfrontiert und teilte die Erfahrung


0

Ich hatte den Befehl gemäß den obigen Antworten korrekt. Was ich verpasst habe, war auf der Workbench, wo wir für den Benutzer "Konnektivität vom Host begrenzen" erwähnen. Der Standardwert ist "%" - ändern Sie diesen in "localhost" und stellen Sie anschließend eine gute Verbindung her!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.