zeroblue2005
Goto Top

MySQL Datenbank nicht gefunden

Hallo Zusammen,

wenn ich diesen Befehl absetze:

mysql> GRANT ALL PRIVILEGES ON lb-db.* TO lb@localhost GRANT ALL PRIVILEGES ON lb-db.* TO lb@localhost;

dann kommt folgende Meldung....

ERROR 1046 (3D000): No database selected

Aber... ist doch vorhanden:

mysql> SHOW DATABASES;
+---------------------+
| Database |
+---------------------+
| information_schema |
| lb-db |

mysql> SELECT User FROM mysql.user;
+------------------+
| User |
+------------------+
| lb |


Was stimmt hier nicht oder mache ich falsch?

Danke

Content-Key: 453842

Url: https://administrator.de/contentid/453842

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: falscher-sperrstatus
falscher-sperrstatus 21.05.2019 um 19:10:56 Uhr
Goto Top
Basics - wie dürfen MySQL Datenbanken benannt werden? Richtig keine Bindestriche.
Mitglied: colinardo
colinardo 21.05.2019 aktualisiert um 19:47:04 Uhr
Goto Top
Servus.
Zitat von @falscher-sperrstatus:

Basics - wie dürfen MySQL Datenbanken benannt werden? Richtig keine Bindestriche.
Das ist falsch, Bindestriche sind valide Zeichen für eine Tabelle:
http://support.sas.com/documentation/cdl/en/acreldb/65247/HTML/default/ ...
Database names can use any character that is allowed in a directory name except for a period, a backward slash (\), or a forward slash (/).
Man sollte die Namen aber generell in Backticks klammern wenn man sich selbst nicht sicher ist.

> wenn ich diesen Befehl absetze:

mysql> GRANT ALL PRIVILEGES ON lb-db.* TO lb@localhost GRANT ALL PRIVILEGES ON lb-db.* TO lb@localhost;
Doppelt gemoppelt und Namen nicht vernünftig in Backticks eingeschlossen. face-wink

So geht das korrekt :
GRANT ALL PRIVILEGES ON `lb-db`.* TO 'lb'@'localhost';   
Grüße Uwe
Mitglied: 139905
139905 21.05.2019 aktualisiert um 19:24:10 Uhr
Goto Top
Guten Abend,

du solltest mal deine Englisch Kenntnisse aufbessern. Da steht nicht das die Datenbank nicht gefunden wurde, sondern dass die DB nicht ausgewählt wurde!

Das geht mit dem Befehl "use":
use lb-db;

VG
Mitglied: colinardo
colinardo 21.05.2019 aktualisiert um 19:26:38 Uhr
Goto Top
Zitat von @139905:
du solltest mal deine Englisch Kenntnisse aufbessern. Da steht nicht das die Datenbank nicht gefunden wurde, sondern dass die DB nicht ausgewählt wurde!

Das geht mit dem Befehl "use":
use lb-db;
Das ist beim Setzen von Berechtigungen auf eine Datenbank nicht nötig, wenn er um den Namen der DB Backticks setzt s.o..

Grüße Uwe
Mitglied: 139905
139905 21.05.2019 um 19:25:22 Uhr
Goto Top
Das ist beim Setzen von Berechtigungen nicht nötig, s.o..

Stimmt. Das habe ich gerade übersehen. Sorry. Mein Kommentar ignorieren.
Mitglied: zeroblue2005
zeroblue2005 21.05.2019 um 19:46:42 Uhr
Goto Top
Sorry, ihr habt ja Recht, "..nicht ausgewählt"

Aber jetzt kommt das hier:

mysql> GRANT ALL PRIVILEGES ON `lb-db`.* TO `lb`@`localhost`; 
ERROR 1133 (42000): Can't find any matching row in the user table  

heisst, finde den Benutzer nicht?
Mitglied: colinardo
Lösung colinardo 21.05.2019 aktualisiert um 20:01:23 Uhr
Goto Top
Mach mal aus den Backticks um den User und localhost normale Hochkommata. Wenn es dann auch nicht geht hast du den User mit dem entsprechenden Host so noch nicht angelegt.
SELECT User,Host FROM mysql.user;
Ich würde dir mal dringend anraten RTFM!
Mitglied: zeroblue2005
zeroblue2005 21.05.2019 um 20:31:18 Uhr
Goto Top
Ich habe es hinbekommen. Ich habe den Benutzer noch mal gelöscht und die DB auch und alles noch mal von vorne. Dann ging es, keine Ahnung was da los war! Danke an alle.