萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.6+ 命令列帶密碼警告「Using a password on the command line interface can be insecure」解決方案

警告來源

MySQL 5.6 起,mysqldump -uroot -ppassword 等命令列直接帶密碼會輸出警告:Warning: Using a password on the command line interface can be insecure. 因進程列表(ps -ef)可被同機器其他用戶看到明文密碼。

官方推薦的兩種安全做法

做法一:配置檔存放憑證(推薦用於自動化腳本)

  1. 編輯 ~/.my.cnf(或 /etc/my.cnf 的 [client]/[mysqldump] 區段):
[mysqldump]
user=root
password=your_strong_password
  1. 設定權限:chmod 600 ~/.my.cnf(僅擁有者可讀寫)。
  2. 執行時不帶密碼參數:
mysqldump db_name > backup.sql

做法二:互動式輸入密碼(適用人工操作)

mysqldump -u root -p db_name > backup.sql
# 提示 Enter password: 時輸入,不會顯示在歷史/進程列表

生產環境最佳實踐

  • 分區塊隔離:在 [mysqldump]、[mysql]、[client] 分別配置,避免權限過度共享。
  • 專用備份帳號:僅授予 SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER, RELOAD 等最小權限。
  • 避免寫入 Shell 歷史:腳本中用 --defaults-extra-file=/path/to/backup.cnf 指定專用配置檔,不污染全域配置。

驗證無警告

[root@host ~]# mysqldump db_name > backup.sql
[root@host ~]# echo $?
0
# 無任何 Warning 輸出
copyright © 萬盛學電腦網 all rights reserved