sql >> Databasteknik >  >> RDS >> MariaDB

Säkra MySQL-säkerhetskopior:En guide

Om du någonsin har använt MySQL, är chansen stor att du förmodligen har tagit säkerhetskopior av din databas. Om du tog säkerhetskopior av din databas är chansen stor att du åtminstone en gång har tänkt på hur du kan säkra dem. I det här blogginlägget ska vi berätta hur du gör just det.

Varför ska du säkra dina MySQL-säkerhetskopier?

Innan vi berättar hur du ska säkra dina MySQL-säkerhetskopior, bör vi förmodligen berätta varför du bör säkra dem i första hand. Vad menar vi ens med att "säkra" dina MySQL-säkerhetskopior? MySQL-säkerhetskopior borde vara säkra som standard, eller hur? Tyvärr är inte allt så enkelt som det verkar. För att ta och underhålla säkra MySQL-säkerhetskopior bör du överväga följande saker:

  1. Ta säkert dina MySQL-säkerhetskopior

  2. Lagra dina MySQL-säkerhetskopior på ett säkert sätt

  3. Överför dina MySQL-säkerhetskopior på ett säkert sätt

Nu är det uppenbarligen lättare sagt än gjort, men vi kommer att ge några allmänna råd som kan vägleda dig i rätt riktning.

Säkra MySQL-säkerhetskopier

  1. För att säkert ta dina MySQL-säkerhetskopior genom att använda till exempel mysqldump, överväg att ange användarnamnet och lösenordet för din MySQL-användare inuti my.cnf. Du kan till och med skapa en .my.cnf-fil i din hemkatalog, lagra användarnamnet och lösenordet där och sedan använda alternativet --defaults-extra-file för att be MySQL läsa den här filen efter den globala alternativfilen:

    [mysqldump]
    user=demo_user
    password=demo_password

    På så sätt behöver du inte längre ange ditt MySQL-lösenord när du kör mysqldump - genom att ange ditt användarnamn och lösenord i my.cnf gör du ditt lösenord oobserverbart för någon annan än DBA:er.

  2. Överväg att ta en titt på mysqldump-secure:det är ett POSIX-kompatibelt wrapper-skript för mysqldump med krypteringsmöjligheter. Verktyget kan säkerhetskopiera databaser som separata filer. Databaser kan också svartlistas från att säkerhetskopieras. Verktyget kan också kryptera dina MySQL-databaser och det är också självvaliderande vilket betyder att om något går fel, kommer det att berätta vad som hände och hur du fixar det, så om du letar efter ett alternativ till mysqldump, överväg definitivt att ge det en försök.

  3. När du har tagit en säkerhetskopia av dina MySQL- eller MariaDB-databasinstanser, överväg att kryptera den. Chansen är stor att data är en av de mest värdefulla tillgångarna för din organisation och genom att kryptera den kan du se till att den är ordentligt skyddad. Tack och lov är kryptering av MySQL-säkerhetskopior inte särskilt komplicerat och det kan göras på ett par sätt, inklusive kryptering av den lokala filen och kryptering av säkerhetskopian i farten. För att kryptera en lokal kopia av din säkerhetskopia, ta helt enkelt en säkerhetskopia av data som lagras i MySQL och kryptera den sedan genom att använda till exempel OpenSSL (ersätt lösenordet med lösenordet du vill använda):

    $ openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc -k password

    Din säkerhetskopia kan dekrypteras genom att köra:

    $ openssl aes-256-cbc -d -in backup.tar.gz.enc -out backup.tar.gz -k password


    Du kan också överväga att kryptera dina säkerhetskopior i farten. För att göra det, i allmänhet skulle du behöva implementera kryptering när säkerhetskopian genereras (dvs generera säkerhetskopian, komprimera den och kryptera den). Så här gör du det för MySQL med mysqldump (din säkerhetskopia skulle heta encrypted_backup.xb.enc):

    mysqldump --all-databases --single-transaction --triggers --routines | gzip | openssl  enc -aes-256-cbc -k password > encrypted_backup.xb.enc

    Du kan också kryptera dina säkerhetskopior med ClusterControl:markera helt enkelt rutorna "Använd komprimering" och (eller) "Aktivera kryptering" i det sista steget av säkerhetskopieringen och du är klar . Ja, så enkelt är det!
     

Du kanske också vill ta en titt på ett skalskript som heter mysql_secure_installation (eller mariadb_secure_installation om du använder MariaDB). Skriptet låter dig:

  • Ställ in ett lösenord för MySQL:s root-konton.

  • Ta bort root-konton som är tillgängliga utanför den lokala värden.

  • Ta bort alla anonyma användarkonton och testdatabasen som kan nås av anonyma användare.

Om du distribuerar MySQL eller MariaDB med ClusterControl, något som du kan göra fritt med Community Edition, tar distributionsprocessen automatiskt hand om dessa säkerhetsåtgärder.

Sammanfattning

När det gäller att säkra dina MySQL-säkerhetskopior är listan över de saker du kan göra ganska lång. Vi hoppas att det här blogginlägget har gett dig några idéer om vad du kan göra för att säkra dina MySQL- eller MariaDB-säkerhetskopior:i allmänhet kan säkerhetskopior säkras genom att göra ditt lösenord oobserverbart när mysqldump anropas, även när du krypterar dina säkerhetskopior lokalt eller på- flugan.


  1. Kan jag köra flera frågor separerade med semikolon med MySQL Connector/J?

  2. Automatisk skalning med Amazon Aurora Serverless

  3. 2 sätt att returnera rader som endast innehåller icke-alfanumeriska tecken i MySQL

  4. pgmemcache vs Infinite Cache