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>

參考資料

Ubuntu LivePatch

Ubuntu LivePath 是一個動態修補 kernel 漏洞的機制。在傳統作法上,如果修補、更新了 kernel ,就一定要重新開機,讓新的 kernel 生效才能真正的修補漏洞。LivePatch 則提供了一個不需要重開機的方法,他會動態的修補在目前的 kernel 裡。在 ubuntu 的 How kernel livepatching works 有圖片說明。

Canonical 很佛心的提供了 Personal token,只要去 ubuntu.com 註冊,就可以取得。

取得 token 以後,就可以使用以下指令啟用

sudo ua attach <token>
sudo ua enable livepatch

啟用後,若想知道目前套用了哪些修補,可以用 canonical-livepatch 指令察看

canonical-livepatch status

若是公司使用,會需要購買企業訂閱。若是想把修補放到公司內部來節省頻寬,可以參考 Livepatch on-prem 的說明來進行。我大致看了一下,說是會把修補放到 S3 上面,離線的作法或許可以架設 minio 來代替 S3。這部份因為沒用到,就先跳過不看了。