首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 客戶端密碼輸入安全指南:四種方式風險對比與最佳實踐

     編輯:MySQL 綜合教學

四種輸入密碼方式風險分級

1. 命令行明文參數 -ppassword / --password=password —— 高風險

mysql -u user -psecret db_name
  • 進程列表(ps -ef、ps -f)可見密碼(部分版本顯示為星號,但 kill 時仍可見)。
  • MySQL 客戶端初始化會用零覆蓋參數,但存在短暫可見窗口。
  • 嚴禁生產環境使用。

2. 交互式提示 -p / --password(無參數) —— 低風險

mysql -u user -p db_name
Enter password: *********
  • 終端不回顯,進程列表不可見。
  • 僅適用於人工交互場景,腳本/自動化無法使用(首行可能被誤讀為密碼)。

3. 配置文件 [client] password=... —— 推薦(自動化/腳本)

# ~/.my.cnf
[client]
password=your_strong_password
  • 權限必須 chmod 600 .my.cnf(僅擁有者讀寫)。
  • MySQL 讀取順序:/etc/my.cnf → /etc/mysql/my.cnf → MYSQL_HOME/my.cnf → ~/.my.cnf,後讀優先。
  • Unix 下忽略「全局可寫」配置文件(安全機制)。
  • Windows 下讀取 %APPDATA%\MySQL\.my.cnf 等路徑。

4. 環境變量 MYSQL_PWD —— 極高風險,禁止使用

  • ps 某版本可顯示環境變量,密碼完全暴露。
  • 即使無此版本,進程內存亦可被讀取。

歷史文件風險防範

  • ~/.mysql_history 記錄交互命令,含 CREATE USER、GRANT、SET PASSWORD 等明文密碼。權限設為 600。
  • Shell 歷史(~/.bash_history)同理,嚴格權限控制。

最佳實踐總結

場景推薦方式關鍵動作
人工登錄-p 交互式無
腳本/自動化~/.my.cnf [client] passwordchmod 600 ~/.my.cnf
應用連接池配置文件/密碼管理系統不落盤明文,運行時注入
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved