Ankündigung

Einklappen
Keine Ankündigung bisher.

alte Datenbank retten ohne möglickeit zum dump

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • alte Datenbank retten ohne möglickeit zum dump

    Folgendes Problem:

    die festplatte meines Linux-servers gab plötzlich den geist auf. s.m.a.r.t. hat aber vorgewarnt. also habe ich die platte ausgebaut und an die seite gelegt und eine neue systemplatte rein und suse (jaaa, ich weiss) dort wieder eingerichtet. dort habe ich auch wieder den für den Betrieb von websites notwendigen mysql-server laufen.

    die alte platte habe ich mühselig "repariert". sie läuft allerdings nur unter einem anderen (Linux-) rechner im Netz. ich habe sie dort exportiert und unter dem neuen rechner gemountet, um an die wichtigsten daten zu kommen (z.B.: .../htdocs).

    Mein Problem:

    Wie komme wieder an die Datenbanken? Die Datenbankbenutzer sind bekannt und ich kann sie neu erstellen und mit rechten ausstatten, auch kann ich (leere) datenbanken aus /var/lib/mysql kopieren, aber wo liegt den der Inhalt?

    Wer kann da weiterhelfen? Gibt's keine möglichkeit an diese Daten wieder ranzukommen, ohne die platte wieder als systemplatte zum laufen zu bekommen? Hilfe!

  • #2
    i.d.R. ebenfalls unter /var/lib/mysql/data
    Dort repräsentiert ein Unterverzeichnis eine DB. Pro Tabelle gibt es bei MyISAM in der Regel 3 Dateien...

    Kommentar


    • #3
      Danke für diese erste schnelle antwort.

      Ich ahne schreckliches:
      Die Verzeichnisse unter /var/lib/mysql, die ja wohl die db repräsentieren sind nämlich alle leer! *aaargh*

      In dem Verzeichnis scheinen ansonsten nur log-files zu sein. Wohin sollten die Daten verschwunden sein?

      Ich dachte halt, wenn ich das neue System genauso aufbaue, wie das alte und anschließend die gleichen Datenbankbenutzer & Rechte anlege und die Datenbanken wieder in die richtigen Ordner kopiere, sollte alles ok sein.

      Kommentar


      • #4
        /var/lib/mysql/data müsste es eigentlich sein.

        Ansonsten durchsuche die gesamte Festplatte nach Dateiendungen
        - *.MYD (grossgeschrieben)
        - *.MYI (grossgeschrieben)
        - *.frm (kleingeschrieben).
        Vielleicht hast du Glück und die sind nur ganz woanders....

        Kommentar


        • #5
          soweit so gut. Es lag an den Benutzerrechten der "alten" Verzeichnisse. Nach einer kleinen Änderung mittels chown, konnte ich die Datenbank-Inhalte anzeigen und kopieren.

          Leider. funzt die Sache (noch nicht).

          Ich habe einen Datenbankbenutzer mitsamt passwort angelegt und ihm (genau, wie zuvor auf dem alten rechner) die Datenbankrechte gegeben.

          Das scheint aber noch nicht zu reichen, denn der Bowser meldet mir:

          Warning: main(db/mysql.php): failed to open stream: No such file or directory in /srv/www/htdocs/db/db.php on line 53

          Warning: main(): Failed opening 'db/mysql.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/db/db.php on line 53

          Fatal error: Cannot instantiate non-existent class: sql_db in /srv/www/htdocs/db/db.php on line 86
          Ein Blick in die db.php zeigt, daß nein phpnuke wohl keinen zugriff auf den mysql-server hat.

          Die Server-version ist MySQL-Version 4.1.13, interpretiert phpnuke das wohl als mysql4, bzw vielleicht kann ich dann mit meiner tollen "geretteten" Datenbank nix anfangen?

          Kommentar


          • #6
            Das ist eher ein phpnuke Problem, weniger ein Problem deiner zurückkopierten DB, die sollte eigentlich laufen, sonst meckert MySQL schon rechtzeitig. Stimmen die Pfade? Gibt es ein db/mysql.php?

            Kommentar


            • #7
              Ja, die /db/mysql.php existiert und in der /config.php ist auch alles richtig eingetragen ($dbtype = "MySQL").
              MySQL läuft.

              Kommentar


              • #8
                Dann passt aber irgendetwas mit der Pfadangabe nicht, sonst würde dir PHP nicht eine entsprechende Meldung ausspucken.

                Kommentar


                • #9
                  naja, ich habe phpnuke natürlich nicht wirklich neu installiert, sondern einfach den inhalt des alten .../htdocs in den neuen kopiert.

                  interpretiere ich denn die Fehlermeldung richtig, daß php den "weg zum SQL-Server" nicht findet?

                  Könnte es sein, daß der neu aufgesetzte MySQL-Server andere Pfade benutzt, als php es tut?

                  Kommentar


                  • #10
                    Nein, Das PHP macht noch gar nichts mit einer Datenbank. Es findet die Datei db/mysql.php nicht. Wieso weiss nur Gott.

                    Mit der Datenbank selber bzw. der MySQL-Installation hat das an dieser Stelle noch 0 zu tun.

                    Kommentar


                    • #11
                      Hilfe.

                      Also, wenn php die (mehrfach überprüft und mit richtigen Rechten versehene) db/mysql nicht findet, die aber unter .../htdocs liegt, dachte ich, alles mal wieder auf anfang zu setzen.

                      also, php-nuke neu eingespielt, config geändert, datenbank neu angelegt und frisch eingespielt und...

                      wieder das Gleiche!

                      wahrcheinlich hast Du Recht und es stimmt mit meinem System an sich etwas nicht.

                      Was mir sofort auffällt, ist, daß ich MySQL in der Version 4 nutze und Apache2, anstatt früher den Apache1.xx.

                      Kanns daran vielleicht hapern?

                      Kommentar


                      • #12
                        Die Pfadangaben deiner Scripte werden sich vermutlich nicht dadurch geändert haben, dass du eine neue Version des Apache installiert hast.

                        Am besten zeigst du uns, in welchen Verzeichnissen sich die beiden Dateien befinden und über welchen Aufruf von include() du versuchst, die Datei einzubinden.

                        Kommentar


                        • #13
                          sry, daß der thread sich jetzt doch ziemlich vom ursprünglichen thema entfernt hat.

                          Also ich trage hier mal zusammen:

                          mein Apache (inkl. php4-modul) greift auf das verzeichnis /srv/www/htdocs zurück (ist klar.), im Unterverzeichnis "db" liegt die db.php
                          Die sieht so aus:
                          http://geheimeprimzahlen.dyndns.org/db/db.txt
                          Ebenfalls im Verzeichnis /srv/www/htdocs/db/ liegen diese Dateien: http://geheimeprimzahlen.dyndns.org/...eichnis_db.txt

                          Sry, kriege ich nicht anderes hin, als mit diesen links.
                          Ich hoffe, daß ist die Info, die man braucht, um bei diesem Prob weiterzukommen.

                          Kommentar


                          • #14
                            Dann sollten wir uns mal an der Stelle etwas genauer umsehen.
                            Leg Dir eine Sicherheitskopie von db.php an und ändere dann das "Original" wie folgt
                            PHP-Code:
                            global $forum_admin;
                            if (
                            $forum_admin == 1) {
                                
                            $the_include "../../../db";
                            } elseif (
                            $inside_mod == 1) {
                                
                            $the_include "../../db";
                            } else {
                                
                            $the_include "db";
                            }

                            // <-- Änderung
                            $target "".$the_include."/mysql.php";
                            echo 
                            '<div>Debug: 
                            '
                            ,
                                
                            '__FILE__:'__FILE__"
                            \n"
                            ,
                                
                            'getcwd:'getcwd(), "
                            \n"
                            ,
                                
                            '$the_include: 'htmlentities($the_include), "
                            \n"
                            ,
                                
                            'is_dir(the_include): 'is_dir($the_include) ? 'ja':'nein'"
                            \n"
                            ,
                                
                            '$dbtype: 'htmlentities($dbtype), "
                            \n"
                            ,
                                
                            'is_file('htmlentities($target), '): 'is_file($target) ? 'ja':'nein'"
                            \n"
                            ;
                                
                            $fh fopen($target'rb');
                            echo 
                            'fopen('htmlentities($target), '): ', ($fh) ? 'ja':'nein'"
                            \n"
                            ,
                                
                            "</div>\n";
                            if (
                            $fh) {
                                
                            fclose($fh);
                            }
                            // Änderung -->

                            switch($dbtype) { 
                            Dann normal aufrufen und die Ausgabe hier reinstellen.

                            Kommentar


                            • #15
                              So habe ich gemacht (ein kleiner Zwischendank an dieser Stelle!)

                              Code wurde auch kopiert, nicht abgetippt.

                              Debug:
                              __FILE__:/srv/www/htdocs/db/db.php
                              getcwd:/srv/www/htdocs
                              $the_include: db
                              is_dir(the_include): ja
                              $dbtype: MySQL
                              is_file(db/mysql.php): ja
                              fopen(db/mysql.php): ja


                              Warning: main(db/mysql.php): failed to open stream: No such file or directory in /srv/www/htdocs/db/db.php on line 71

                              Warning: main(): Failed opening 'db/mysql.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/db/db.php on line 71

                              Fatal error: Cannot instantiate non-existent class: sql_db in /srv/www/htdocs/db/db.php on line 104
                              Für mich sieht das nice aus!

                              Ist die ganze Sache doch ein Konfigurationsfehler in php, mysql oder gar Apache? Kann es sein, daß irgendwelche .htaccess-files fehlen o.ä.?

                              Was immer es ist, es kostet mich echt Nerven *haarerauf*

                              Kommentar

                              Lädt...
                              X