Wykonując kopię bazy lub inne cykliczne zadania za pomocą komend takich jak mysqldump i mysql pewnym problemem jest przekazywanie loginów i haseł. Szczególnie gdy chce się uniknąć przekazywania ich w linii komend bądź umieszczania w skrypcie.
Niniejszy wpis jest częścią cyklu o przeprowadzeniu zrzutów baz danych MySQL na który składają się następujące wpisy:
Lepszym sposobem jest skorzystanie z parametru --defaults-extra-file
w którym można zdefiniować parametry dla poszczególnych poleceń. Dopuszczalne są kombinacje między innymi loginu, hasła, adresu serwera, nazwy bazy. Aby lepiej zilustrować ten mechanizm utworzony zostanie zrzut bazy o nazwie istotna_baza
, ale login, hasło i adres serwera będzie pobrany z zewnętrznego pliku.
W pierwszej kolejności trzeba przygotować i zapisać plik z niezbędnymi danymi dla polecenia mysqldump: login, hasło i adres serwera. Można zapisać go w dowolnym miejscu. Na potrzeby przykładu jego pełna ścieżka to ~/istotna_baza.cred
.
[mysqldump]
user="istotna_baza_uzytkownik"
password="wielce_skompikowane_haslo_do_istotnej_bazy"
host="localhost"
W pliku trzymane jest hasło, zatem możliwość jego odczytu powinien mieć tylko właściciel.
$ chmod 400 ~/istotna_baza.cred
$ ls -la ~/istotna_baza.cred
-r-------- 1 radek radek 82 Apr 2 13:19 /home/radek/istotna_baza.cred
Następnie wystarczy skorzystać z polecenia mysqldump i przekazać do niego plik z danymi do bazy i jej nazwę.
$ mysqldump --defaults-extra-file=~/istotna_baza.cred istotna_baza > ~/istotna_baza.sql
Zwięźle, rzeczowo. Dziękuję