星期六, 7月 30, 2022

mysqldump/pgdump 連線密碼的存放

寫資料庫備份腳本時,會避免把密碼放在腳本裡,免得密碼流出去。

這時候密碼要藏在那邊呢?

postgresql

postgresql 的 pg_dump 預設會去讀取 $HOME/.pgpass 檔案,所以可以把帳號跟密碼放在這邊,腳本裡使用 pg_dump 進行備份時就不需要額外用參數指定。

.pgpass 檔案的內容是

hostname:port:database:username:password
  • hostname: 資料庫主機
  • port: 資料庫主機的 port
  • database: 資料庫
  • username: 連線的使用者帳號
  • password: 連線的使用者密碼

使用的時候,就不需要指定密碼了

pg_dump -h <db_host> -U <db_user> -F c -f $dump_file <db_name>

mysql

一般備份 mysql 資料庫會使用 mysqldump,mysqldump 有個參數 --defaults-file=<config_file>

所以可以用這個參數來指定,先在 $HOME/.config 資料夾下新增 backup.my.cnf 檔案,內容如下

[mysqldump]
user=<db_user>
password=<db_pass>
  • <db_user>: 放連線的使用者帳號
  • <db_pass>: 放連線的使用者密碼

至於主機的部份,可以用 mysqldump 參數指定,例如

mysqldump --defaults-file=$HOME/.config/backup.my.cnf -h <db_host> <db_name>

參考資料

沒有留言: