sql >> Database teknologi >  >> RDS >> MariaDB

Gendannelse af en mySQL-instans fra en anden brugerkonto (macOS)

Jeg brugte min vens mac midlertidigt, indtil min egen blev vedligeholdt. Så tidligere på ugen slettede jeg min brugerkonto på hans mac, som havde en masse databaser, som jeg havde brug for. Jeg havde sikkerhedskopieret de fleste brugerdata, før jeg slettede den konto, men snart indså jeg, at jeg gik glip af at sikkerhedskopiere databasen. Det heldige og muligvis årsagen til dette er, at databasedatabiblioteket generelt ligger uden for brugerkontoen. I denne artikel vil jeg nævne punktopstillinger for, hvordan jeg fik disse DB-data tilbage ved at bruge min venners brugerkonto (eller du kan endda oprette en ny og udføre de samme trin).

  • Sørg for, at mariadb stadig er installeret ved at køre brew install mariadb .Jeg fandt ud af, at den var tilgængelig, men homebrew havde ikke adgang til installationsmappen, da den blev oprettet fra en anden brugerkonto. Så først genopretter vi dette ved at køre:
sudo chown -R $(whoami) /usr/local/bin

Hvis kommandoen kastede et fejldump, der viser, hvilke mapper den ikke har adgang til, kan du køre den samme kommando for hver af mapperne. Jeg kørte også brew upgrade mariadb for at holde dig opdateret med den nyere mariadb-installation (selvom jeg ikke vil anbefale at køre dette generelt, før du har sikkerhedskopieret databaserne).

  • Dernæst skal du finde ud af, hvilken datamappe mariadb bruger og også køre chown på det. Dette kan gøres ved at køre:
brew services list

Dette vil give en liste over de kørende tjenester og deres kørselskonfigurationer. Bare åbn mariadb-opgavernes konfiguration og se parameteren --datadir i XML--bør være inde i argumentblokken. I mit tilfælde var dette --datadir=/usr/local/var/mysql . Kopier nu stien og kør:

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

På dette tidspunkt kan du undre dig over, hvorfor ikke blot kopiere databiblioteket til ens egen mac og derefter åbne databasen direkte? Problemet her er, at mappen kun har .ibd og .frm filer, som virkelig ikke kan importeres af mySQL. Så jeg er nødt til at køre mysql-serveren igen med denne data-dir og derefter eksportere den.

  • Dernæst måtte jeg stoppe enhver igangværende mysql-server for at sikre, at jeg kan starte mysql problemfrit. Det gør jeg ved at køre:
brew services stop mariadb
ps aux | grep mysql

Den sidste kommando er at kontrollere, at der ikke kører andre mysql-forekomster. Hvis kommandoen returnerer processer, der kører mysql, skal de dræbes ved hjælp af kommandoen kill -9, ellers skal du åbne Activity Monitor, bruge søgning til at filtrere mysql ned og tvinge dem ihjel manuelt.

Nu kan den friske mysql-instans startes ved at bruge:

brew services start mariadb

Alternativt kan du endda kalde programmet, der findes i bin-mappen, der er nævnt i XML-filen for homebrew-tjenestens konfiguration, dvs. tage den første programstreng og erstatte mysqld_safe til mysql.server start og kør kommandoen. I mit tilfælde gjorde jeg dette ved at køre:

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

Det vil returnere SUCCES! hvis tjenesten starter med succes. Ellers ville du skulle tjekke fejllogfilerne (var i /usr/local/var/mysql mappe for mig) for at finde ud af, hvad der gik galt, og løse det ved at google.

Og det er stort set det, du kan nu sikkerhedskopiere databaserne, som du normalt ville gøre. Det gør jeg ved at køre:

mysql -u root -p<password>
show databases

Og dette ville give en liste over alle databaserne. Og udfør derefter backup-kommandoen for hver database, du vil sikkerhedskopiere som:

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

Og det er stort set sådan det gøres. Og jeg airdroppede databaserne til min egen bærbare computer og var færdig.


  1. PostgreSQL multi INSERT...RETURNERER med flere kolonner

  2. MySQL bruger DB har ikke adgangskodekolonner - Installerer MySQL på OSX

  3. 3 måder at kontrollere en kolonnes datatype i PostgreSQL

  4. MySQL brugerstyring