MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wiederherstellen einer mySQL-Instanz von einem anderen Benutzerkonto (macOS)

Ich benutzte vorübergehend den Mac meines Freundes, bis mein eigener gewartet wurde. Also habe ich Anfang dieser Woche mein Benutzerkonto auf seinem Mac gelöscht, der eine Reihe von Datenbanken hatte, die ich brauchte. Ich hatte die meisten Benutzerdaten gesichert, bevor ich dieses Konto gelöscht hatte, aber bald wurde mir klar, dass ich es verpasst hatte, die Datenbank zu sichern. Das Glück und möglicherweise der Grund dafür ist, dass das Datenbankdatenverzeichnis in der Regel außerhalb des Benutzerkontos liegt. In diesem Artikel erwähne ich Aufzählungspunkte, wie ich diese DB-Daten mithilfe des Benutzerkontos meines Freundes zurückerhalten habe (oder Sie können sogar ein neues erstellen und dieselben Schritte ausführen).

  • Stellen Sie sicher, dass mariadb noch installiert ist, indem Sie brew install mariadb ausführen . Ich habe festgestellt, dass es verfügbar war, aber Homebrew hatte keinen Zugriff auf das Installationsverzeichnis, da es von einem anderen Benutzerkonto erstellt wurde. Zuerst stellen wir dies wieder her, indem wir Folgendes ausführen:
sudo chown -R $(whoami) /usr/local/bin

Wenn der Befehl einen Fehlerabbild ausgegeben hat, der zeigt, auf welche Ordner er keinen Zugriff hat, können Sie denselben Befehl für jeden der Ordner ausführen. Ich habe auch brew upgrade mariadb ausgeführt um mit der neueren mariadb-Installation auf dem neuesten Stand zu bleiben (obwohl ich nicht empfehlen würde, dies im Allgemeinen auszuführen, bis Sie die Datenbanken gesichert haben).

  • Als nächstes müssen Sie herausfinden, welches Datenverzeichnis mariadb verwendet und chown auch darauf ausführen. Dies kann durch Ausführen von:
  • erfolgen
brew services list

Dadurch erhalten Sie eine Liste der laufenden Dienste und ihrer Ausführungskonfigurationen. Öffnen Sie einfach die Konfiguration der Mariadb-Aufgaben und sehen Sie sich den Parameter --datadir an im XML--sollte innerhalb des Argumentblocks sein. In meinem Fall war dies --datadir=/usr/local/var/mysql . Kopieren Sie nun diesen Pfad und führen Sie Folgendes aus:

sudo chown -R $(whoami) /usr/local/var/mysql

An dieser Stelle fragt man sich vielleicht, warum man nicht einfach das Datenverzeichnis in den eigenen Mac kopiert und dann direkt die Datenbank öffnet? Das Problem hierbei ist, dass der Ordner nur .ibd enthält und .frm Dateien, die wirklich nicht von mySQL importiert werden können. Also muss ich den MySQL-Server erneut mit diesem Datenverzeichnis ausführen und dann exportieren.

  • Als nächstes musste ich jeden laufenden MySQL-Server stoppen, um sicherzustellen, dass ich MySQL reibungslos starten kann. Ich mache das, indem ich Folgendes ausführe:
brew services stop mariadb
ps aux | grep mysql

Der letzte Befehl besteht darin, zu überprüfen, ob keine anderen mysql-Instanzen ausgeführt werden. Wenn der Befehl irgendwelche Prozesse zurückgibt, die mysql ausführen, müssen diese mit dem Befehl kill -9 beendet werden, oder öffnen Sie den Aktivitätsmonitor, verwenden Sie die Suche, um mysql herauszufiltern, und erzwingen Sie das manuelle Beenden.

Jetzt kann die frische mysql-Instanz gestartet werden, indem Sie Folgendes verwenden:

brew services start mariadb

Alternativ können Sie sogar das Programm aufrufen, das sich im bin-Ordner befindet, der in der XML-Datei der Homebrew-Dienstkonfiguration erwähnt wird, d. H. Nehmen Sie die erste Programmzeichenfolge und ersetzen Sie mysqld_safe zu mysql.server start und führe den Befehl aus. In meinem Fall habe ich dies getan, indem ich ausgeführt habe:

/usr/local/opt/mariadb/bin/mysql.server start

Es wird ERFOLG zurückgeben! wenn der Dienst erfolgreich gestartet wird. Andernfalls müssten Sie die Fehlerprotokolle überprüfen (war in /usr/local/var/mysql Ordner für mich), um herauszufinden, was schief gelaufen ist, und es durch Googeln zu lösen.

Und das ist so ziemlich alles, Sie können die Datenbanken jetzt wie gewohnt sichern. Ich mache das, indem ich Folgendes ausführe:

mysql -u root -p<password>
show databases

Und dies würde eine Liste aller Datenbanken geben. Führen Sie dann den Sicherungsbefehl für jede Datenbank aus, die Sie sichern möchten, wie folgt:

mysqldump -u root -p<password> dbname > dbname.sql

Und so ungefähr wird es gemacht. Und ich habe die Datenbanken per Airdrop auf meinen eigenen Laptop übertragen und war fertig.