MySQL Access denied

Gossi

Bekanntes Mitglied
Moinsen,

Ich habe ein Problem mit MySQL, ich greife mit PHP (ich weiß, das hier is nen Java-Forum aber das Problem scheint bei MySQL zu liegen) auf eine Datenbank zu.

Ich habe zuvor den User erstellt und die Zugriffsrechte für die Datenbank auf die ich zugreifen will erteilt, das ganze sieht so aus:
Benutzer|Host|Typ|Rechte|GRANT|Aktion
****|localhost|datenbankspezifisch|ALL PRIVILEGES|Nein|Rechte ändern

Ich habe nun schon mehrfach einen neuen User angelegt, das Passwort überprüft etc. aber es geht einfach nicht, wenn ich hingegen root nehmen, funktioniert alles wunderbest, nun meine Frage, wo könnte der Fehler liegen?
Laut dem was ich im Internet gefunden habe scheinen meine Berechtigungen auch alle zu passen...
 
Zuletzt bearbeitet von einem Moderator:
greifts du auch wirklich von
Code:
localhost
zu?
Ansonsten heißt es, dein User darf nur von localhost zugreifen.
Wenn dein Server also woanders liegt, musst du aus
Benutzer|Host|Typ|Rechte|GRANT|Aktion
****|localhost|datenbankspezifisch|ALL PRIVILEGES|Nein|Rechte ändern

Benutzer|Host|Typ|Rechte|GRANT|Aktion
****|%|datenbankspezifisch|ALL PRIVILEGES|Nein|Rechte ändern

machen.

Gruß
 
mhhh .. dann führ mal folgenden Befehl aus:
SQL:
GRANT ALL ON *.* to  'DEINUSER'@'localhost'
Wobei das relativ sinnlos wäre .. glaub das er dann das gleiche darf wie root ... aber egal 🙂.

Das flushen wäre nur notwendig, wenn du die User via "INSERT .. " anlegst...

siehe auch:
MySQL :: MySQL 5.1 Referenzhandbuch :: 5.9.2 Hinzufügen neuer MySQL-Benutzer
Der Grund für die Verwendung von FLUSH PRIVILEGES bei der Erstellung von Konten mit INSERT besteht darin, dass der Server zum Neuladen der Grant-Tabellen angewiesen werden muss. Andernfalls wird Ihre Änderung erst umgesetzt, wenn Sie den Server neu starten. Bei GRANT ist das Absetzen von FLUSH PRIVILEGES nicht erforderlich.
 
mhhh .. dann führ mal folgenden Befehl aus:
SQL:
GRANT ALL ON *.* to  'DEINUSER'@'localhost'
Wobei das relativ sinnlos wäre .. glaub das er dann das gleiche darf wie root ... aber egal 🙂.

Jo, mit dem Statement dürfte der user alles was root kann 😀

Hab den User über phpMyAdmin erstellt:

Datenbank ausgewählt -> Rechte überprüfen -> Neuen Benutzer hinzufügen -> Gewähre alle Rechte auf die Datenbank "*****"

Und anschließend hab ich den Server gefühlt 10 mal neu gestartet, falls es jemandem hilft, hier mal der PHP-Code für den Zugriff:
<?
$dbname="****";
$dbhost="localhost";
$dbuser="****";
$dbpass="****";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);​
?>
 
Nur so eine Idee, wenn Du User/Passwort/Rechte schon geprüft hast. Es gibt bei Linux eine kleine Merkwürdigkeit. Und zwar ist in der Datei /etc/hosts der name localhost komischerweise nicht auf die IP 127.0.0.1, sondern auf eine Netzwerk-IP gemapped. Das führt dann dazu, dass Clients sich mit der Netzwerk-IP verbinden. Abhilfe schafft die Korrektur in der o.g. Datei oder die Angabe der IP 127.0.0.1 statt des Namens localhost in Deinem Clientcode.
 
Installier dir PHP MyAdmin...und sonst einfach erst einmal in der Connection von Localhost auf 192.168.0.1 wechseln. Jedenfalls ist PHP MyAdmin zum Verwalten der Rechte sehr komfortabel.

Bezüglich nillehammer's Kommentar, es kann sein das du auch in der Mysql Config von Localhost auf IP wechseln musst. Sollte aber an sich nur bei Zugriffen von Außen notwendig sein.
 
Jo, mit dem Statement dürfte der user alles was root kann

Nope. Er hat afaik zwar die Rechte in alle Tabellen von allen Datenbanken zu schreiben, aber Grant-Rechte dürfte er keine haben. Ob er DB's anlegen darf weiß ich gerade nicht.

Das Flushen sollte nur notwendig sein, wenn du den User direkt in die User-Tabelle schreibst. Schaut zumindest beim Überfliegen so aus:
MySQL :: MySQL 5.1 Referenzhandbuch :: 5.9.2 Hinzufügen neuer MySQL-Benutzer

Leg den Benutzer vllt mal mit deinem root-Benutzer neu an mit:

[c]GRANT ALL PRIVILEGES ON ${datenbankname}.* TO '${username}'@'localhost' IDENTIFIED BY '${passwort_plain}';[/c]
 
Installier dir PHP MyAdmin...und sonst einfach erst einmal in der Connection von Localhost auf 192.168.0.1 wechseln. Jedenfalls ist PHP MyAdmin zum Verwalten der Rechte sehr komfortabel.

Ich nutze phpMyAdmin, damit habe ich den User ja angelegt (nicht über die Tabelle)

Code:
FLUSH PRIVILEGES;
hast du nach dem Anlegen ausgeführt?

Jetzt ja, ändert leider nichts am Problem


Also, ich habe mich mal bei phpMyAdmin mit dem betroffenen User angemeldet, da kann ich genau das gleiche Statement wie in PHP ohne Probleme ausführen...
 
Sorry für Doppelpost, aber Edit is blockiert.

Fehler is behoben, hab dem User globales Select gegeben, nu läuft alles 😀
 

Zurück
Oben