phpMyAdmin

maceis

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
hallo zusammen,

mir ist nach dem Update auf Mac OS X 10.4.4 folgende Änderung im Zusammenhang mit phpMyAdmin 2.6.2 und MySQL 4.1.11-standard aufgefallen:

Vor dem Update hatte ich die folgende Einstellung in der config.inc.php erfolgreich verwendet:
$cfg['Servers'][$i]['host'] = localhost

Nach dem Update erhielt ich damit (auch nach einem Update auf phpMyAdmin 2.7.0 pl2) die Fehlermeldung:
Code:
Fehler
MySQL meldet: 
#2002 - Der Server antwortet nicht.
(evtl. ist auch der Socket des lokalen MySQL-Servers socket
nicht korrekt konfiguriert)

Wenn ich in der config.inc.php `localhost' durch die IP Adresse oder den Domainnamen (FQDN) ersetze, erhalte ich eine Verbindung zum MySQl Server.

Ich mach eigentlich sehr wenig mit phpMyAdmin und kann mir diese Verhalten nicht erklären.
Kann sich jemand vorstellen, woran das geschilderte Verhalten liegt?
 
Hi maceis,

vielleicht hat sich etwas in Bezug auf die Namenslauflösung oder Netzwerksicherheit geändert.

Du könntest mal schauen was die Kommandos "hostname", "nslookup <IP Adresse>" bzw. "nslookup <hostname" ergeben. Anstatt "nslookup" wird jetzt eher "dig" verwendet.

Viele Grüße
 
Zuletzt bearbeitet:
vielleicht andere php version und/oder ein fehler in der config?
mir fehlen da die ' ' um localhost....

warum connectest du nicht über socket?
 
ich hatte auch ein problem mit mysql. php hat den socket in "/var/mysql/mysql.sock" gesucht. dort ist er aber nicht.
 
Hi,

OneEight könnte mit dem Syntaxfehler Recht haben, dann würde aber auch noch der Strichpunkt fehlen, also
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address

Ist zwar nicht die beste FAQ, doch schau mal hier bei 1&1
http://faq.1und1.de/hosting/scripte_datenbanken/datenbanken/4.html
wobei bei Dir der MySQL-Server wohl eher lokal laufen wird.

Viele Grüße
 
Zuletzt bearbeitet:
mikne21 schrieb:
...
vielleicht hat sich etwas in Bezug auf die Namenslauflösung oder Netzwerksicherheit geändert.
...
Nein, natürlich nicht.
Wenn das so wäre, würde die Verbindung auch im Terminal nicht klappen.
Was ich oben vergaß zu erwähnen, ist, dass auch sämtliche CGI Skripte (in Perl), die sich ebenfalls mit dem MySQL Server auf localhost verbinden auch noch problemlos funktionieren.
Trotzdem Danke für den Hinweis; manchmal steht man ja auf der Leitung ;).

@oneOeight
gleiche php Version
wie gesagt, mit IP Adresse oder FQDN funtioniert es ja wieder - ich möchte nur gern verstehen, warum 'localhost' nimmer geht.

Syntaxfehler war keiner drin (hab's oben nicht ganz korrekt zitiert).
Vorher ging's ja auch und augetauscht habe ich nur den "Inhalt" der 's.
 
ok, frag mich aber immer noch, warum du auf den localhost mit tcp zugreifst statt mit socket...
 
oneOeight schrieb:
ok, frag mich aber immer noch, warum du auf den localhost mit tcp zugreifst statt mit socket...
Er hatte ja localhost drin stehen. Da es dann mit der IP funktioniert denke ich das es daran liegt:
maceis schrieb:
Code:
Fehler
MySQL meldet: 
#2002 - Der Server antwortet nicht.
(evtl. ist auch der Socket des lokalen MySQL-Servers socket
nicht korrekt konfiguriert)
Was nichst anderes heißt als, daß sich wahrscheinlich der Pfad des Socket geändert hat.

Pingu
 
Pingu schrieb:
Was nichst anderes heißt als, daß sich wahrscheinlich der Pfad des Socket geändert hat.

das war bei mir das problem. der socket-pfad hatte sich geändert.
 
maceis schrieb:
hallo zusammen,

mir ist nach dem Update auf Mac OS X 10.4.4 folgende Änderung im Zusammenhang mit phpMyAdmin 2.6.2 und MySQL 4.1.11-standard aufgefallen:

Vor dem Update hatte ich die folgende Einstellung in der config.inc.php erfolgreich verwendet:
$cfg['Servers'][$i]['host'] = localhost

Nach dem Update erhielt ich damit (auch nach einem Update auf phpMyAdmin 2.7.0 pl2) die Fehlermeldung:
Code:
Fehler
MySQL meldet: 
#2002 - Der Server antwortet nicht.
(evtl. ist auch der Socket des lokalen MySQL-Servers socket
nicht korrekt konfiguriert)

Wenn ich in der config.inc.php `localhost' durch die IP Adresse oder den Domainnamen (FQDN) ersetze, erhalte ich eine Verbindung zum MySQl Server.

Ich mach eigentlich sehr wenig mit phpMyAdmin und kann mir diese Verhalten nicht erklären.
Kann sich jemand vorstellen, woran das geschilderte Verhalten liegt?

Insgesamt recht mysteriös. Ich habe auf drei Macs jetzt auf 10.4.4 aktualisiert, jeweils den Standard-Apache mit Marc Lyanages PHP5 oder (hier im Büro) die PHP-Apple-Build 4.3.11 zusammen mit den aktuelleren MySQL-4.1.-Ausgaben (zum Beispiel 4.1.13, die ja mit der mit der von Dir verwendeten Version vergleichbar ist).

Hier hat sich das Verhalten nicht geändert, daher würde ich mir gern mal Deine config.inc.php anschauen zusammen mit einer phpinfo() (besser nicht öffentlich posten) ;)

Es kann an vielen Dingen liegen, denn die mysql-Extension versucht grundsätzlich bei der Verwendung von "localhost" als gemeinsamer Server auf die Verbindung per Unix-Socket zurückzufallen, auch wenn "tcp" als Verbindungstyp ausgewählt ist (daher auch der "Vermutungshinweis" in der Fehlermeldung von phpMyAdmin).

Hier können nun mehrere Dinge mit hineinspielen, wobei man sich erst einmal die Konfigurationen genauer anschauen sollte.

Wenn Interesse, dann schick's mir per PN ;)
 
Zuletzt bearbeitet:
Bei mir hat sich auch nichts verändert! Ist ja mysteriös...

hatte es nach dem update auf 10.4.4 schon fast erwartet, habe aber keinen socket-Fehler provozieren können bisher.
 
m.E. wird bei der verwendung von localhost die verbindung direkt über den lokalen socket gesucht. d.h. es geht in das filesystem des servers.

bei verbindung über IP oder Domainname wird eine TCP/IP-verbinung hergestellt, welche über den port von mysql eine verbindung zum mysql-server aufbaut.

wie gesagt gehe ich davon aus, dass dein socket-pfad sich geändert hat und das du daher nur über TCP/IP zugreifen kannst.
 
oneOeight schrieb:
ok, frag mich aber immer noch, warum du auf den localhost mit tcp zugreifst statt mit socket...
Das könnte ich natürlich tun, ich frage mich aber, warum ich das tun sollte.
Es würde außerdem immer noch nicht erklären, warum phpMyAdmin unter 10.4.3 mit 'localhost' funktioniert und unter 10.4.4 nicht.
Es erklärt auch nicht, warum andere Clients (Kommandozeile) auch unter 10.4.4 sich mit dem MySQL Server auf localhost verbinden können, phpMyAdmin aber nicht.
Das zu verstehen ist eigentlich mein Hauptanliegen; die Funktionalität habe ich ja schon wieder hergestellt.

Pingu schrieb:
...
Was nichst anderes heißt als, daß sich wahrscheinlich der Pfad des Socket geändert hat.
Das erscheint mir als Ursache unwahrscheinlich, da ja letztendlich auch bei einer Verbindung über tcp auf das Socket zugegriffen werden muss.
Hinzu kommt, dass die Verbindung mit '127.0.0.1' (~ localhost) - wie ich zwischenzeitlich noch getestet habe - ebenfalls erfolgreich aufgebaut wird.

@Hilarious
falls ich nicht noch draufkomme, greife ich gerne auf Dein Angebot zurück. Danke.
 
maceis schrieb:
@Hilarious
falls ich nicht noch draufkomme, greife ich gerne auf Dein Angebot zurück. Danke.

Immer gern!
 
maceis schrieb:
Das erscheint mir als Ursache unwahrscheinlich, da ja letztendlich auch bei einer Verbindung über tcp auf das Socket zugegriffen werden muss.


also... beim kompilieren von php mit mysql wird der socket für mysql in php konfiguriert. fehlt nun dieser socket, kannst du nicht auf mysql zugreifen. das ist der fehler, den ich hatte und den du anscheinend auch hast.

wenn du aber eine TCP/IP-Verbindung aufbaust, gehst du auf den port des rechners und dort lauscht der mysql-server. und der hat natürlich sein eigenen socket beim starten von mysqld.

insofern ist das alles schon sehr plausibel, was wir dir hier als lösung anbieten :)
 
doppelpost :)
 
maceis schrieb:
Es würde außerdem immer noch nicht erklären, warum phpMyAdmin unter 10.4.3 mit 'localhost' funktioniert und unter 10.4.4 nicht.
Es erklärt auch nicht, warum andere Clients (Kommandozeile) auch unter 10.4.4 sich mit dem MySQL Server auf localhost verbinden können, phpMyAdmin aber nicht.
Das zu verstehen ist eigentlich mein Hauptanliegen; die Funktionalität habe ich ja schon wieder hergestellt.
Das spricht dafür, daß der Pfad zum Socket oder die Zugriffsrechte sich geändert haben.
Denn:
  • Der Server verwaltet seinen Pfad zum Socket selbst (my.cnf), bei mir /tmp/mysql.sock
  • Jeder Client verwaltet unabhängig voneinander den Pfad zum Socket
Wenn Du jetzt mySQL selber installiert hast und der Apache mit aktivierten PHP wurde von Apple überarbeitet, dann kann es sein, daß Dein mySQL früher den selben Pfad für das Socket verwendet hat wie PHP. Jetzt durch das Update jedoch nicht mehr.

Das gleich kann natürlich auch mit den Zugriffsrechten passiert sein.

Pingu
 
Code:
ln -s /private/tmp/mysql.sock /private/var/mysql/mysql.sock

optional vorher: mkdir /private/var/mysql/
 
Nur als Beispiel. Ich habe gerade einmal schnell das PHP auf meinem 10.4.4 aktiviert und da ist jetzt die MySQL-Client-Library 4.1.13a mit einem Socket gesetzt auf /var/mysql/mysql.sock am laufen.

Jetzt kommt es darauf an wie Du Dein MySQL installiert hast.

Auf meinem 10.4.4 habe ich kein MySQL. Auf meinem 10.3.9 läuft MySQL mit einem Socket in /tmp/mysql.sock. Dieses MySQL habe ich glaube ich von entropy.ch.

Pingu
 
Zurück
Oben Unten