Shell Script 連接 MySQL 安全寫法


在 Shell Script 連接 MySQL, 可以用以下語句實現:

$ mysql -u db_user -pdb_password db_name -e ‘sql_query’

如果系統內沒有其他使用者,這個方法沒什麼問題,但如果系統有其他使用者,在執行 Shell Script 時,其他使用者便可以用 ps 這類指令,看到正在連接 MySQL 的使用者名稱及密碼。

較安全的方法是將 MySQL 使用者名稱及密碼儲存到家目錄的 .my.cnf 檔案,那便不用在 Shell Script 輸入 -P 選項並輸入密碼了,以下是具體操作方法。

先在帳號的家目錄建立檔案 .my.cnf:

$ vi ~/.my.cnf

輪入以下內容,將 “db_password” 替換成你的 MySQL 密碼:

儲存檔案後離開編輯器。

為了確保其他帳號不能讀取 .my.cnf 的密碼,將檔案的權限設定為 600:

$ chmod 600 .my.cnf

之後在 Shell Script 連接 MySQL 時, 就不用輸入 “-p” 參數及密碼,例如:

$ mysql db_name -e ‘sql_query’

設定了 .my.cnf 檔案後,除了 mysql client 可以使用外,mysqldump 也可以一同使用。

上面的方法是使用 MySQL 預設的檔名 .my.cnf,如果想自訂檔案,例如將 .my.cnf 設定為 .my-host.cnf, 只要在執行 mysql 指令時使用 “–defaults-file” 參數,定義設定檔,語法是:

$ mysql –defaults-file=/home/phpini/.my-host.cnf db_name -e ‘sql_query’

No Responses

  1. Pingback: Apache Log 储存到 MySQL | Mr.Cpp 02 November 2018

Leave a Reply