PDO kann eine Verbindung zu MySQL localhost, aber nicht die Fernbedienung, Sie sind sogar die gleichen server
Sagen wir mal der MySQL-server ist mydomain.com:3306
, und die Apache und MySQL auf dem gleichen server-Maschine.
Wenn ich meine Dateien hochladen PHP-Skript auf dem server, kann ich schließen Sie immer den MySQL mit PDO und diese DNS:
mysql:host=localhost;dbname=my_database
Jedoch, wenn ich den DNS-string zu diesem:
mysql:host=mydomain.com;dbname=my_database
Nur geändert localhost
zu mydomain.com
alle anderen Einstellungen wie Benutzername und Passwort bleiben die gleichen. Ich bekam diese Warnung:
OK packet 6 bytes shorter than expected
Fand ich viele Diskussionen über die OK packet 6 bytes shorter than expected
problem und Sie sind alle im Zusammenhang mit der Passwort-hashing. Allerdings, da kann ich die Verbindung zum server mit der localhost
Einstellung, ich glaube nicht, dass in meinem Fall das Passwort-hashing ist der Grund.
Jede bekam man dieses problem?
p.s. Ich bin mit Kohana 3.0.9 Datenbank-Modul zu tun, die Verbindung.
p.p.s. MySQL-version: 5.1.52, PHP-version: 5.3.2
- nur diese Warnung? oder auch "mysqlnd cannot connect to MySQL 4.1+ using old-Authentifizierung"? Die Passwort-hashing kann der Grund sein, wenn Sie einen anderen Benutzer für die 'user'@'mydomain.com'
- ja. nur dieser Fehler. es gibt keine andere Fehlermeldung angezeigt. eigentlich kann ich die Verbindung zum remote-server mit einem GUI-tool (SQLyog) mit dem domain-Namen. Es funktioniert einfach nicht mit meinem PHP-Skript.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wahrscheinlich, weil
127.0.0.1:3306
ist eine andere IP & port ausyourExternalIP:3306
und mit Ihrem domain-Namen eine Verbindung mit Ihrem externe IP -, die nicht die gleiche IP wielocalhost
(127.0.0.1)Es sei denn, Sie haben konfiguriert, mysql-zu hören auf alle IPs, und erlauben Sie Zugriff für alle Benutzer von alle IPs kann man nicht davon ausgehen, mysql ist das hören auf Ihre externe IP, oder, dass der Benutzername/Passwort erlaubt den Zugriff von einem "remote host" (D. H. von & durch Ihre externe IP)
Können mysql-client-Verbindung mit hostname?
MySQL-Treiber über eine "Optimierung", bei denen die Verwendung von "localhost" als hostname des Servers wird intern neu zugeordnet werden, die in der Verwendung von unix-domain-sockets anstelle von TCP-sockets. Dies ist für die Gründe der Schnelligkeit, wie von unix-sockets sind viel schneller als TCP (vor allem, da Sie nicht den overhead eines vollständigen Lauf durch den TCP-stack), aber es führt zu widersprüchlichem Verhalten, wie Sie sehen, besonders, wenn Sie nicht übereinstimmende Treiber-Versionen.
Wenn Ihr hosting-Unternehmen verwendet SAßEN auf Ihren Servern, was bedeutet, dass Sie server hat eine interne IP (Beispiel: 10.0.0.101) und-Adresse zu übersetzen, die externe IP, die du lösen mit mydomain.com (Beispiel: 241.34.31.2), dann ist die firewall möglicherweise nicht setup, um tatsächlich die route, die Art des Verkehrs wieder.
Entweder Weg, es ist nicht eine gute Idee, um zu erzwingen, dass der gesamte Datenverkehr über die firewall in diesem Fall, und Sie wären besser dran mit Ihrer IP-direkt (oder localhost).
Aber ich vermute, dass die anderen hier genannten Vorschläge sind plausibel, vor allem, wenn der Fehler im Zusammenhang mit der Passwort-überprüfung.