Ich versuche, eine Verbindung zu einem MySQL-Server bei Dreamhost von einem PHP-Scrip in einem Server bei Slicehost (zwei verschiedene Hosting-Unternehmen) zu verbinden. Ich muss das tun, damit ich neue Daten bei slicehost zu dreamhost übertragen kann. Die Verwendung eines Dumps ist keine Option, da die Tabellenstrukturen unterschiedlich sind und ich nur eine kleine Teilmenge von Daten übertragen muss (100-200 tägliche Datensätze) Das Problem ist, dass ich die neue MySQL Password Hashing-Methode bei Slicehost benutze und Dreamhost die alte verwendet, also bekomme ich
%Vor%Fakten:
Die offensichtlichste Option für mich wäre, die neue MySQL Password Hashing-Methode bei dreamhost zu verwenden, aber sie wird sie nicht ändern und ich bin nicht root, also kann ich das nicht selbst tun.
Irgendwelche wilde Idee?
Durch Volkerk Suggestion:
%Vor%Das Offensichtliche wäre jetzt a mysql & gt; SET GLOBAL old_passwords = 0; Aber ich brauche SUPER Privileg, das zu tun, und sie werden es mir nicht geben
wenn ich die Abfrage ausführen
%Vor%Ich bekomme den Fehler
%Vor%Ich bin nicht root ...
Der Typ bei Dreamhost Support besteht darauf, dass das Problem an meinem Ende ist. Aber er sagte, dass er jede Frage ausführen wird, die ich ihm sage, da es ein privater Server ist. Also, ich muss dem Typen GENAU sagen, was er laufen soll. Also sag ihm, er soll rennen
%Vor%wäre ein guter Anfang?
Ja, das sieht nach einem Toughie aus. Ohne die Zusammenarbeit Ihrer Hosts oder die Möglichkeit, Passwort-Formate oder Client-Bibliotheken zu ändern, haben Sie nicht viele Optionen.
Ehrlich gesagt, meine erste Wahl wäre, Dreamhost zu enttäuschen. Das ist wahrscheinlich eine Menge Arbeit, aber wenn sie mit alten inkompatiblen Dingen stecken bleiben, wird es weiterhin problematisch sein.
Wenn das keine Option ist, was ist dann mit einem gemeinsamen automatisierten Prozess? Sie können die Daten auf der Slidehost-Seite in eine CSV-Datei exportieren und sie in das für Dreamhost erforderliche Format massieren und dann auf den Dreamhost-Server hochladen. Sie könnten ein Cron-Skript auf dem Dreamhost-Server haben, das in regelmäßigen Abständen nach der hochgeladenen Datei sucht und diese verarbeitet (sicher stellen, dass sie nach der erfolgreichen Verarbeitung verschoben oder gelöscht wird).
Unter einigen Bedingungen können Sie möglicherweise weiterhin ein "neues Hashalgorithmus-Kennwort" festlegen und verwenden.
MySQL 4.1+ Server können beide Login-Algorithmen verarbeiten. Welche verwendet wird, ist unabhängig von der alten Passwörter-Variable. Wenn MySQL einen 41 Zeichen langen Hash findet, der mit * beginnt, wird das neue System verwendet. Und die PASSWORD () -Funktion ist auch in der Lage, beide Algorithmen zu verwenden. Wenn das Feld mysql.user.Password groß genug ist, um 41 Zeichen zu speichern, und die Variable alt-passwords 0 ist, wird ein "neues" Passwort erstellt.
Die Dokumentation für old_passwords sagt Variable Scope Both
, also könnte es sein kann es für Ihre Sitzung ändern.
Stellen Sie eine Verbindung zum MySQL-Server her (mit einem Client, der dies trotz der globalen alten_Passwörter = 1 tun kann), z. HeidiSQL und versuchen Sie Folgendes:
Wenn% ce_de% gedruckt wird (dh die globalen alten_passwörter sind aktiviert, aber für die Sitzung ist es deaktiviert und PASSWORD () hat ein "neues" Passwort zurückgegeben), sollten Sie Setzen Sie ein neues Passwort mit dem neuen Algorithmus für Ihr Konto innerhalb derselben Sitzung.
Aber wenn Dreamhost wirklich den Algorithmus für neue Kennwörter deaktivieren möchte, wird das Feld mysql.user.Password weniger als 41 Zeichen lang sein und es gibt nichts, was Sie dagegen tun können (außer dass Sie sie nagen) / p>
Ich hatte gerade dieses Problem und konnte es umgehen.
Verbinden Sie sich zuerst mit einem älteren Client, der alth_passwords nichts ausmacht, mit der MySQL-Datenbank. Verbinden Sie sich mit dem Benutzer, den Ihr Skript verwendet.
Führen Sie diese Abfragen aus:
%Vor%Ändern Sie in Ihrem PHP-Skript Ihre mysql_connect-Funktion so, dass sie das Client-Flag 1 enthält:
%Vor%Damit konnte ich mich erfolgreich verbinden.
Ich würde das lösen, indem ich die Daten bei Slicehost mit SELECT ... INTO OUTFILE
ablege.
Dadurch können Sie Ihre Abfrage so entwerfen, dass die Ausgabe in dem Format erfolgt, das mit der Tabellenstruktur am Zielstandort übereinstimmt.
Übertragen Sie die Dump-Datei anschließend an Dreamhost und verwenden Sie LOAD DATA INFILE
.
Abgesehen davon ist Dreamhost wirklich immer noch mit MySQL 4.0? Sie sind extrem veraltet - selbst die erweiterte Unterstützung von MySQL 4.1 ist abgelaufen in diesem Monat (Dezember 2009).
Ich hatte das gleiche Problem. Um es zu lösen, habe ich Folgendes getan:
%Vor%Tags und Links php mysql mysql-error-1044 password-hash