[英]Protect the password when using Mysql in an unattended bash-script
我正在編寫一個使用mysql的bash腳本(用於cron作業):
mysql -uusername -ppassword -e 'something;'
我正在尋找一種方法來保持密碼在腳本中的使用方便,但是這種方式也可以保證這些信息對該系統上的其他用戶不安全。 可以使用ps -ef的用戶和可能閱讀文本文件的用戶......
那么如何保護將在Linux上的自動腳本中使用的密碼?
將所有設置放在選項文件中。 您可以使用默認的~/.my.cnf
文件,也可以使用--defaults-file==filename
指定備用文件。 請參閱文檔4.2.3.4。 影響選項文件處理的命令行選項
選項文件包含mysql命令的默認設置。 例如,您可以在其中加入以下內容。
[mysql]
user=username
password=password
database=yourdb
使選項文件僅由您可讀,因此其他用戶無法看到您的密碼。
這是MySQL 5.6.6+用戶的更新答案
如4.6.6 mysql_config_editor - MySQL配置實用程序中所述 ,現在有一種更安全的方式來存儲mySQL密碼,它不會在本地配置文件中存儲明文密碼。
mysql_config_editor實用程序(從MySQL 5.6.6開始提供)使您可以將身份驗證憑據存儲在名為.mylogin.cnf的加密登錄路徑文件中。 文件位置是Windows上的%APPDATA%\\ MySQL目錄和非Windows系統上的當前用戶的主目錄。 MySQL客戶端程序稍后可以讀取該文件以獲取用於連接到MySQL服務器的身份驗證憑據。
可以通過運行以下命令來創建此文件:
mysql_config_editor set --login-path=client --host=localhost --user=root --password
您可以使用以下命令打印現有設置:
mysql_config_editor print --login-path=client
這將輸出當前設置:
[client]
user = root
password = *****
host = localhost
請注意,密碼默認是加密的。
在運行cron作業的用戶的主目錄中創建一個文件~/.my.cnf
。 確保其他用戶無法讀取( chmod 600 ~/.my.cnf
)
[client]
user=username
password=something
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.