Problem mit zwei unterschiedlichen MySQL-Versionen

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von Der_Jan, 06.02.2007.

  1. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    Beiträge:
    606
    Zustimmungen:
    7
    MacUser seit:
    06.01.2004
    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
     
  2. Fuzzelabbe

    Fuzzelabbe MacUser Mitglied

    Beiträge:
    246
    Zustimmungen:
    13
    MacUser seit:
    24.02.2005
    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.
     
  3. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    Beiträge:
    606
    Zustimmungen:
    7
    MacUser seit:
    06.01.2004
    Hey Fuzzelabbe,

    Naja, das steht halt consider upgrading MySQL...


    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? :(
     
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    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
     
  5. Darkstar

    Darkstar MacUser Mitglied

    Beiträge:
    160
    Zustimmungen:
    0
    MacUser seit:
    17.07.2004
    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.
     
  6. Fuzzelabbe

    Fuzzelabbe MacUser Mitglied

    Beiträge:
    246
    Zustimmungen:
    13
    MacUser seit:
    24.02.2005
    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
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    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.
     
  8. mr660

    mr660 MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    22
    MacUser seit:
    28.08.2006
    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)
     
Die Seite wird geladen...

Diese Seite empfehlen