在 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 密碼:
1 2 3 |
[client] user=db_user password=db_password |
儲存檔案後離開編輯器。
為了確保其他帳號不能讀取 .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