Kapitel 5: MySQL-Datenbankadministration 199
Access denied for user: ’@unknown’ to database mysql
heißt das, dass Sie in der user-Tabelle keinen Eintrag ’root’ im User-Spaltenwert
haben und dass mysqld den Hostnamen f¨ur Ihren Client nicht aufl¨osen kann. In diesem
Fall m¨ussen Sie den Server mit der --skip-grant-tables-Option neu starten und Ihrer
‘/etc/hosts’- oder ‘\windows\hosts’-Datei einen Eintrag f¨ur Ihren Host hinzuf¨ugen.
• Wenn Sie einen Fehler wie folgt erhalten:
shell> mysqladmin -u root -pxxxx ver
Access denied for user: ’root@localhost’ (Using password: YES)
bedeutet das, dass Sie ein falsches Passwort benutzen. Siehe Abschnitt 5.3.7 [Pass-
words], Seite 215.
Wenn Sie das Root-Passwort vergessen haben, k¨onnen Sie mysqld mit --skip-grant-
tables neu starten, um das Passwort zu ¨andern. Diese Option wird weiter hinten im
Handbuch ausf¨uhrlicher beschrieben.
Wenn Sie den obigen Fehler erhalten, obwohl Sie kein Passwort angegeben haben,
bedeutet das, dass in einer der my.ini-Dateien ein falsches Passwort steht. Siehe
Abschnitt 5.1.2 [Option files], Seite 175. Sie k¨onnen die Benutzung der Optionsdateien
mit der --no-defaults-Option wie folgt verhindern:
shell> mysqladmin --no-defaults -u root ver
• Wenn Sie eine bestehende MySQL-Installation von einer Version vor 3.22.11 auf Version
3.22.11 oder sp¨ater aktualisiert haben, haben Sie das mysql_fix_privilege_tables-
Skript ausgef¨uhrt? Falls nicht, tun Sie das! Die Struktur der Berechtigungstabellen
hat sich ab MySQL-Version 3.22.11 ge¨andert, als das GRANT-Statement mit Funktion
erf¨ullt wurde.
• Falls es aussieht, als h¨atten sich Ihre Berechtigungen mitten in einer Sitzung ge¨andert,
kann es sein, dass ein Superuser sie ge¨andert hat. Das Neuladen der Berechtigungsta-
bellen betrifft neue Client-Verbindungen, aber auch bestehende Verbindungen, wie in
Abschnitt 5.3.3 [Privilege changes], Seite 209 beschrieben.
• Wenn Sie es nicht schaffen, dass Ihr Passwort funktioniert, denken Sie daran, dass Sie
die PASSWORD()-Funktion benutzen m¨ussen, wenn Sie das Passwort mit den INSERT-,
UPDATE- oder SET PASSWORD-Statements setzen. Die PASSWORD()-Funktion wird nicht
ben¨otigt, wenn Sie das Passwort mit dem GRANT ... INDENTIFIED BY-Statement oder
dem mysqladmin password-Befehl setzen. Siehe Abschnitt 5.3.7 [Passwords], Seite 215.
• localhost ist ein Synonym f¨ur Ihren lokalen Hostnamen und gleichzeitig der vor-
gabem¨aßige Host, mit dem sich Clients versuchen zu verbinden, wenn Sie nicht ex-
plizit einen Hostnamen angeben. Verbindungen zu localhost funktionieren jedoch
nicht, wenn Sie auf einem System arbeiten, das MIT-pThreads benutzt (localhost-
Verbindungen werden ¨uber Unix-Sockets hergestellt, die von MIT-pThreads nicht un-
terst¨utzt werden). Um auf solchen Systemen Probleme zu vermeiden, sollten Sie die
--host-Option zu benutzen, um den Serverhost explizit anzugeben. Das stellt eine
TCP/IP-Verbindung zum mysqld-Server her. In diesem Fall muss Ihr echter Hostname
in den user-Tab elleneintr¨agen auf dem Server-Host stehen. (Das gilt sogar dann, wenn
Sie ein Client-Programm auf demselben Host fahren, wo der Server l¨auft.)
• Wenn Sie beim Versuch, sich mit mysql -u user_name db_name mit einer Datenbank
zu verbinden, einen Access denied-Fehler erhalten, gibt es eventuell ein Problem mit
Comentarios a estos manuales