phpMyAdmin kann sich nicht mit der Datenbank verbinden

*cerox*

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.357
Hallo zusammen,

ich habe hier auf einem SuSe 10.0 System Apache mit PHP und MySQL am Laufen -> bei allem die neuste Version.

Soweit funktioniert alles. Ich habe für den MySQL-root-User ein Kenntwort festgelegt, mit dem ich mich auch in der Kommandozeile mit dem Programm "mysql" erfolgreich anmelden kann.

Nun habe ich mir phpMyAdmin heruntergeladen (neuste Version) und in die htdocs entpackt. Wenn ich nun das Ganze im Browser betrachte, kommt folgende Fehlermeldung:

Code:
#1045 - Access denied for user 'root'@'localhost' (using password: NO)

Ich habe nun stundenlang wegen diesem Thema gegoogelt und mir auch zu dieser Fehlermeldung in Google die ersten beiden Seiten durchgeschaut aber es bringt mich alles nicht weiter. Man bekommt dort immer gezeigt, wie die config.inc.php auszusehen hat; ich habs mehrfach geändert - immer ohne Erfolg - zur Zeit sieht sie so aus:

Code:
<?php
$cfgPmaAbsoluteUri = 'http://192.168.5.2/phpmyadmin/';
$cfgServers[1]['host'] = 'localhost';
$cfgServers[1]['user'] = 'root';
$cfgServers[1]['password'] = 'meinpasswort';
?>

Ich hatte als letztes irgendwo gelesen, man müsse den Code in PHP Tags einschließen aber auch ohne geht es nicht, auch ohne [1] nicht und was ich nicht alles für Varianten gesehen und ausprobiert habe.

Es kommt immer dieselbe Meldung, interessant daran finde ich ja das "using password: NO", da ich ja eigentlich ein Passwort definiere; wenn ich nun als user "xyz" eintrage, kommt immer noch die selbe Meldung - daher hatte ich das Gefühl, die config würde nicht beachtet. Zum Spaß habe ich dann mal die Rechte auf 666 gesetzt und dann kam:

Code:
Wrong permissions on configuration file, should not be world writable!

Kann mir jemand helfen? Ich weiß nicht was ich noch ausprobieren soll.

Ich werde langsam noch verrückt. Ich hatte das beschriebene Problem vor 1-2 Wochen; behoben habe ich es dann indem ich das Ganze per auth_type http gelöst habe: in der config.inc.php stand nur

Code:
<?php $cfg['auth_type']='http'; ?>

und es gab natürlich noch ne .htaccess und .htpasswd mit dem root-MySQL Benutzerdaten.

Es kommt jetzt aber wieder dieselbe Meldung.... Woran kann es noch liegen? Die Datenbank selbst funktioniert wunderbar nur phpMyAdmin will einfach nicht. Die config.default.php hab ich auch schon probiert und angepasst - selbes Ergebnis.
 
Ich würde Authtype kurz auf "config" stellen, dann für root "jeden Host" festlegen (steht vielleicht nur auf "localhost").

Ansonsten mal mit dem mitgelieferten mysql Client probieren. Aber ich tippe mal, dass in der Standardkonfiguration root nur von "localhost" erlaubt ist.
 
Und was muss ich für 'host' eintragen, wenn jeder Host gemeint sein soll und nicht nur localhost?
 
Gibts da vl ne config.inc.php.sample ?
Hättest da keine leere anlegen müssen...

SuSE ist eigentlich eh nicht so toll...

Hast du auch die richtige Datei bearbeitet :) ?

David
 
Ob SuSe toll ist oder nicht ist Geschmackssache und im Moment will ich nicht den Server neu aufsetzen - irgendwann kommt schon was anderes drauf. Das hat aber damit erstmal nichts zu tun.

Gibts da vl ne config.inc.php.sample ?

Es gibt eine config.default.php im Ordner libaries oder wo das war die hab ich auch mal in den phpmyadmin Ordner kopiert und abgeändert - geht aber genauso nicht - weder mit config noch mit http.

Hast du auch die richtige Datei bearbeitet

Ja, es muss die richtige Datei am richtigen Ort sein denn wenn ich chmod 666 machen kommt ja die Meldung, das sollte man nicht machen (siehe oben).
 
Afaik musste, wenn du auth_type auf http stellst in de config von phpmyadmin garkein Server-Passwort eingeben, sondern nur beim Login.
Stells am besten auf http

David
 
Das hab ich ja alles schon gemacht.

z.B. so:

<?php $cfg['auth_type']='http'; ?>

oder zusätzlich noch mit:

$cfg['user'] = 'root';
$cfg['password'] = '';

Ich hab auch schon 'user' leer gelassen - bringt einfach alles nichts...
 
Versuch bitte erst einmal, Authtype auf 'config' zu setzen, root und entspr. passwort einzutragen und zu gucken, ob's dann geht. Dann probierst Du das mit 'cookie' und 'HTTP' - wenn's dann nicht geht, wird root einfach nicht von anderen Rechnern außer localhost zugelassen. Das ist nämlich meine Vermutung, da ich denke, dass by default Connections von root außerhalb von localhost nicht zugelassen werden.

Ansonsten mal mit dem mysql-Client probieren, einmal vom Remote und einmal von localhost. Wenn es von localhost aus nicht geht, ist das Passwort falsch.

Trial and error...
 
Versuch bitte erst einmal, Authtype auf 'config' zu setzen, root und entspr. passwort einzutragen und zu gucken, ob's dann geht.

Hab ich doch bereits alles gemacht und oben geschrieben...

wenn's dann nicht geht, wird root einfach nicht von anderen Rechnern außer localhost zugelassen.

Ja, das hab ich mir schon gedacht nur wieso ging es dann letztes mal?

phpMyAdmin rufe ich im Browser nicht vom localhost auf sondern vom LAN aus.

Das Kommandozeilen-Programm mysql rufe ich per SSH auf -> also von localhost und da kann ich mich erfolgreich einloggen.

Wie kann ich die Berechtigung ändern? In der mysqlaccess.conf - wenn ja wo?

Und wenn dass daran liegen sollte... wieso kommt dann "access denied from root@localhost"?

edit: Ich habe jetzt phpmyadmin 2.6 ausprobiert - da kommt der Fehler, phpmyadmin konnte die Konfigurationsdatei nicht verarbeiten.

Wenn Sie eine leere Seite erhalten, ist Ihre Konfigurationsdatei in Ordnung.

Toll, ich erhalte eine leere Seite.
 
Zuletzt bearbeitet:
Verwende doch einfach die /phpMyAdmin/libraries/config.default.php und editier diese

$cfg['PmaAbsoluteUri'] = 'http://www.your_web.net/path_to_your_phpMyAdmin_directory/';

$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'DEINUSER'; (z.B. fritz)
$cfg['Servers'][$i]['password'] = 'DEINPASSWORT'; (z.B. geheim)
$cfg['Servers'][$i]['only_db'] = 'NURDIESEDATENBANK'; (z.B. userdatenbank)

Das sind die einzigen Punkte, wo du was aendern bzw. ueberprufen musst. Es sei denn du
hast deinen MySQL-Daemon verhunzt.

MySQL sollte natuerlich immer auf localhost laufen; ist alles auf dem selben Server gibts
auch keinen Grund dafuer dieses Sicherheitsfeature nicht zu nutzen.

PS: ich hab das jetzt grad mit dem aktuellen phpMyAdmin getestet und es geht ohne Probs.
 
Der arme Cerox.
Also ich fass dann mal kackfrech wie ich bin zusammen.
*Cerox* hat die default config schon mehrmals benutzt und einfach nur die einzugebenen Daten ersetzt.Er hat es auch schon einfach auf http gesetzt.
Er hat die zugriffsrechte geändert um zu sehen ob auch wirklich auf die Datei zugegriffen wird.
Hat versucht das Problem alleine zu lösen.Hat versucht das Problem durch googlen zu lösen.Hat versucht das Problem durch einen Freund zu lösen und versucht es grade durch ein Forum ;)
Es hat ja schon einmal funktioniert gehabt....
Imho bsteht das Problem einfach nur weil eine Datei falsch konfiguriert ist (hab ka wie das passieren konnte) und dadurch wird das PW nicht richtig ausgelesen oder verarbeitet.
Ich persönlich habe keine Idee die zur Lösung beihelfen könnte ausser das System neu aufzusetzten oder die Spitzhacke
ne Cerox ;)
Ich würd mal nen phpmyadmin ersatz probieren und gucken ob der geht wenn ja die KOMPLETTE phpmyadmin von einem bekannten über die eigene spielen komplett und dann nur die PWs editieren und dann würd ich aufgeben wenn das nichts bringt.
mfG Blacki der rasende Lotus ;)
 
Im Übrigen funktioniert der lokale Connect via mysql Client wunderbar und selbstgeschriebene Anwendungen in PHP können problemlos auf MySQL + root zugreifen...

Ich tippe ja auf PMA-Bug.
 
Im Übrigen funktioniert der lokale Connect via mysql Client wunderbar und selbstgeschriebene Anwendungen in PHP können problemlos auf MySQL + root zugreifen...

Richtig und genau das ist der Punkt. Ein mysq_connect mit root und dem Passwort funktioniert einwandfrei - ich kann mich auch lokal mit mysql in der Kommandozeile anmelden. Der Webserver läuft ja auch auf dem selben Server, weshalb es immer localhost sein sollte.

Das einzige Problem ist: "using password = no"
Ich könnte jetzt natürlich lamp nochmal komplett neu kompilieren, aber dadurch laufe ich von dem Problem nur wieder davon. Auch ein Ersatz zu phpMyAdmin wäre nur ein Umgehen des Problems - keine Lösung.

Die Konfiguration wie oben von "uturn" hatte ich bereits...
 
Zuletzt bearbeitet:
Ha, kann es sein, dass ichs habe?

PHP:
<?php
$cfgPmaAbsoluteUri = 'http://192.168.5.2/phpmyadmin/';
$cfgServers[1]['host'] = 'localhost';
$cfgServers[1]['user'] = 'root';
$cfgServers[1]['password'] = 'meinpasswort';
?>
Ein Index bei php fängt bei 0 an
das $i da drin passt schon, wird bei 0 initialisiert und dann nach jedem Server-Abschnitt um 1 hochgezählt...

Bei dem ersten Server muss also 0 im index stehen.

Sollte das nicht helfen poste doch mal die ganze Konfiguration. Das pw kannste ja mal leerlassen.

David
 
Ich habe lamp gezwungendermaßen neu installiert, da sich einfach keine Problemlösung fand.

Jetzt verwende ich das default Script, entsprechend angepasst und es ging sofort mit http und config - egal welcher auth_type.

An dem, was du sagst, kann es eigentlich nicht gelegen haben, da das default Script $i gleich 0 setzt und danach eins hoch zählt (bin mir jetzt nicht sicher) aber damit geht es ja jetzt auch.
 
Zurück
Oben