Problem mit zwei unterschiedlichen MySQL-Versionen

Der_Jan

Der_Jan

Aktives Mitglied
Thread Starter
Dabei seit
06.01.2004
Beiträge
712
Reaktionspunkte
30
Guten Morgen,
auf zwei Webservern liegt jeweils eine Datentabelle mit identischer Struktur. Über ein CMS sollen die Datensätze synchron bearbeitet werden.

Im PHP-Skript stelle ich zunächst eine Verbindung mit dem Server 1 her und bearbeite den Datensatz. Auf Server 1 läuft die MySQL-Version 4.0.27 und der Datensatz wird wie gewünscht abgespeichert.

Anschließend soll eine weitere Verbindung zum Server 2 (MySQL-Version 4.1.10) aufgebaut werden, funktioniert aber mit dem Hinweis

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in

nicht. Wenn ich das richtig verstehe, liegt es an den unterschiedlichen Versionen der MySQL. Nun bin ich auf beiden Servern nur "Untermieter", habe keine Möglichkeit, die MySQL-Versionen anzugleichen. Gibt es dennoch einen Trick, wie ich das Skript dennoch zum Laufen bringen kann? :confused:

Der_Jan
 
Moin Jan,

wie kommst du darauf, dass es am Versionsunterschied liegt?

Die Meldung meckert über ein fehlerhaftes Protokoll. Üblicherweise kann man auch keine remote Verbindung zu einer mySQL DB aufbauen, das klemmen die Hoster ab, mit gutem Grund.

Jedes Skriptkiddie könnte BruteForce somit jeden mySQL Server angreifen...

So kann es trivial funktionieren:

PHP-Skript A auf Server A generiert eine PHP-Datei mit den DB-Abfragen. Diese Datei wird auf Server B übertragen und von PHP-Skript B ausgeführt. Das Ergebnis dieser Abfrage geht den selben Weg zurück.


ciao
Fuzzel.
 
Hey Fuzzelabbe,

Fuzzelabbe schrieb:
Moin Jan,
wie kommst du darauf, dass es am Versionsunterschied liegt?

Naja, das steht halt consider upgrading MySQL...


Fuzzelabbe schrieb:
Die Meldung meckert über ein fehlerhaftes Protokoll. Üblicherweise kann man auch keine remote Verbindung zu einer mySQL DB aufbauen, das klemmen die Hoster ab, mit gutem Grund.

Ich habe das ganze vorher von meinem lokalen Server zu Server 2 versucht, dass hat soweit geklappt.

Keine Möglichkeit, über zwei von einem Skript nacheinander hergestellte Verbindungen das zu realisieren? :(
 
von 4.1.x auf 4.2.x hat sich das Anmeldeprozedere /(Paßwortverschlüsselung) geändert. Von daher könnte es in der Tat schon problematisch werden.

Problem nummer 2 ist dabei die Datenkonsistenz, denn eigentlich gehört so eine Replikation in Transactions gepackt. Wie ist denn da das zeitverhalten? Bist Du sicher das es da keine Irrtümer/Fehlläufer gibt?

Würde nicht eine nächtliche Synchronisation vielleicht ausreichen? Oder ein regelmäßiges Syncen all n Stunden ( mit Sperrung der Frontends in der Zeit!?)

Gruß wegus
 
Wie Wegus schon sagte, liegt das in der Tat an den beiden MySQL Versionen:
Wenn Du in gleicher Art und Weise auf die Datenbank zugreifen möchtest, solltst Du Dir mal das hier ansehen:

http://dev.mysql.com/doc/refman/4.1/en/old-client.html

Danach kommst Du auch wie gewohnt auf den MySQL Server mit der neueren Version wieder drauf.
 
Moin Leute,

Ihr stellt mein Weltbild auf den Kopf... das PHP-Skript greift doch nicht über den Client der lokalen mySQL-DB auf die entfernte DB zu?

Der Client sollte doch keine Rolle spielen, wenn über API oder Konnektor auf die DB zugegriffen wird !?


Ciao
Fuzzel
 
Wie sonst willst Du das machen Fuzzelabbe?
Es braucht ja eine Client-Library um das Kommunikationsprotokoll zu beherrschen. Eine passende Library wird daher auch immer dynamisch/Statisch hinzugeladen. Bei Postgres/MySQL fällt das eher selten auf, weil der Client im Lieferumfang von PHP enthalten ist.
 
also, fuer replikation wuerde ich tatsaechlich die "eingebaute" replikation nutzen, die mysql mitbringt - vorausgesetzt du kannst/darst ueber's netzt auf die beidem mysql server zugreifen. bei den grossen hostern ist das ja teilweise nicht moeglich...

zum problem: neuere mysql-versionen bringen eine neue (bessere) verschluesselung der passwoerter mit. dies wird aber nicht von den "älteren" mysql-libraries (die werden von php eingebunden) unterstützt. in diesem fall hilft eventuell, die "alte" passwort-methode zu nutzen:

old_password('123456')

wenn du zugriff auf die mysql-db (hier genau das datenbank-schema datenbank mysql mit den ganzen system-einstellungen) hast, kannst du z.b. das passwort aendern. eventuell deinen hoster fragen, ob die was "aendern" koennen/wollen.

hier noch der wichtige hinweis: lies die mysql-doku (www.mysql.com)
 
Zurück
Oben Unten