簡體   English   中英

在無人參與的bash腳本中使用Mysql時保護密碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM