sql >> Database >  >> RDS >> MariaDB

Een mySQL-instantie herstellen van een ander gebruikersaccount (macOS)

Ik gebruikte de mac van mijn vriend tijdelijk totdat die van mij werd onderhouden. Dus eerder deze week heb ik mijn gebruikersaccount op zijn mac verwijderd, die een heleboel databases had die ik nodig had. Ik had een back-up gemaakt van de meeste gebruikersgegevens voordat ik dat account verwijderde, maar al snel realiseerde ik me dat ik een back-up van de database had gemist. Het gelukkige en mogelijk de reden hiervoor is dat de databasegegevensdirectory zich over het algemeen buiten het gebruikersaccount bevindt. In dit artikel zal ik opsommingen geven van hoe ik deze DB-gegevens terugkreeg met het gebruikersaccount van mijn vrienden (of je kunt zelfs een nieuwe maken en dezelfde stappen uitvoeren).

  • Zorg ervoor dat mariadb nog steeds is geïnstalleerd door brew install mariadb uit te voeren .Ik ontdekte dat het beschikbaar was, maar homebrew had geen toegang tot de installatiemap omdat het was gemaakt met een ander gebruikersaccount. Dus eerst herstellen we dit door:
sudo chown -R $(whoami) /usr/local/bin

Als de opdracht een foutdump heeft gegenereerd die aangeeft tot welke mappen het geen toegang heeft, kunt u dezelfde opdracht uitvoeren voor elk van de mappen. Ik heb ook brew upgrade mariadb uitgevoerd om up-to-date te blijven met de nieuwere mariadb-installatie (hoewel ik niet zou adviseren dit in het algemeen uit te voeren totdat u een back-up van de databases hebt gemaakt).

  • Vervolgens moet je uitzoeken welke datadirectory mariadb gebruikt en daar ook chown op uitvoeren. Dit kan gedaan worden door het volgende uit te voeren:
brew services list

Dit geeft een lijst met de actieve services en hun runconfiguraties. Open gewoon de configuratie van de mariadb-taken en bekijk de parameter --datadir in de XML--moet binnen het argumentenblok zijn. In mijn geval was dit --datadir=/usr/local/var/mysql . Kopieer nu dat pad en voer uit:

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

Op dit punt kunt u zich afvragen, waarom kopieert u niet gewoon de gegevensmap naar uw eigen mac en opent u de database direct? Het probleem hier is dat de map alleen .ibd . heeft en .frm bestanden die echt niet kunnen worden geïmporteerd door mySQL. Dus ik moet de mysql-server opnieuw uitvoeren met deze gegevensmap en deze vervolgens exporteren.

  • Vervolgens moest ik elke lopende mysql-server stoppen om ervoor te zorgen dat ik mysql soepel kon starten. Ik doe dit door te rennen:
brew services stop mariadb
ps aux | grep mysql

De laatste opdracht is om te controleren of er geen andere mysql-instanties actief zijn. Als de opdracht processen met mysql retourneert, dan moeten die worden gedood met de opdracht kill -9 of anders, open Activity Monitor, gebruik zoeken om mysql te filteren en forceer ze handmatig te doden.

Nu kan de nieuwe mysql-instantie worden gestart met behulp van:

brew services start mariadb

Als alternatief kunt u zelfs het programma oproepen dat te vinden is in de bin-map die wordt vermeld in het XML-bestand van de homebrew-serviceconfiguratie, d.w.z. neem de eerste programmareeks en vervang mysqld_safe naar mysql.server start en voer de opdracht uit. In mijn geval deed ik dit door het volgende uit te voeren:

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

Het zal SUCCES teruggeven! als de service succesvol start. Anders zou u de foutenlogboeken moeten controleren (was in /usr/local/var/mysql map voor mij) om erachter te komen wat er mis ging en het op te lossen door wat te googlen.

En dat was het zo'n beetje, u kunt nu een back-up maken van de databases zoals u dat normaal zou doen. Dit doe ik door te draaien:

mysql -u root -p<password>
show databases

En dit zou een lijst geven van alle databases. En voer vervolgens de back-upopdracht uit voor elke database waarvan u een back-up wilt maken als:

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

En zo is het ongeveer gedaan. En ik liet de databases naar mijn eigen laptop vliegen en was klaar.


  1. Een overzicht van de nieuwe DBaaS van MariaDB - SkySQL

  2. Vreemd gedrag in Postgresql

  3. Hoe FROM_DAYS() werkt in MariaDB

  4. Hoe kan ik deze opmerkingen in een MySQL-dump verwijderen?