文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  mysql_config_editor — MySQL 設定工具

6.6.7 mysql_config_editor — MySQL 設定工具

mysql_config_editor 公用程式可讓您將驗證憑證儲存在名為 .mylogin.cnf 的混淆登入路徑檔案中。檔案位置在 Windows 上是 %APPDATA%\MySQL 目錄,在非 Windows 系統上是目前使用者的主目錄。MySQL 用戶端程式稍後可以讀取該檔案,以取得連線至 MySQL 伺服器的驗證憑證。

.mylogin.cnf 登入路徑檔案的未混淆格式包含選項群組,類似於其他選項檔案。.mylogin.cnf 中的每個選項群組都稱為「「登入路徑」」,這是一個僅允許特定選項的群組:hostuserpasswordportsocket。將登入路徑選項群組視為一組選項,指定要連線的 MySQL 伺服器以及要驗證的身分。以下是一個未混淆的範例

[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost

當您呼叫用戶端程式連線至伺服器時,用戶端會將 .mylogin.cnf 與其他選項檔案搭配使用。它的優先順序高於其他選項檔案,但低於在用戶端命令列上明確指定的選項。如需選項檔案使用順序的相關資訊,請參閱第 6.2.2.2 節「使用選項檔案」

若要指定替代的登入路徑檔案名稱,請設定 MYSQL_TEST_LOGIN_FILE 環境變數。mysql_config_editor、標準 MySQL 用戶端 (mysqlmysqladmin 等) 以及 mysql-test-run.pl 測試公用程式會辨識此變數。

程式以下列方式使用登入路徑檔案中的群組

  • 如果您未指定 --login-path=name 選項來明確指出要使用的登入路徑,mysql_config_editor 預設會對 client 登入路徑進行操作。

  • 若沒有 --login-path 選項,用戶端程式會從登入路徑檔案讀取與從其他選項檔案讀取的相同選項群組。請考慮以下命令

    mysql

    依預設,mysql 用戶端會從其他選項檔案讀取 [client][mysql] 群組,因此它也會從登入路徑檔案讀取這些群組。

  • 使用 --login-path 選項時,用戶端程式還會從登入路徑檔案讀取具名的登入路徑。從其他選項檔案讀取的選項群組保持不變。請考慮以下命令

    mysql --login-path=mypath

    mysql 用戶端會從其他選項檔案讀取 [client][mysql],並從登入路徑檔案讀取 [client][mysql][mypath]

  • 即使使用 --no-defaults 選項,用戶端程式也會讀取登入路徑檔案,除非設定 --no-login-paths。即使存在 --no-defaults,這樣也能以比在命令列上更安全的方式指定密碼。

mysql_config_editor 會混淆 .mylogin.cnf 檔案,使其無法以明文讀取,且當用戶端程式取消混淆時,其內容僅在記憶體中使用。如此一來,密碼可以非明文格式儲存在檔案中,並在稍後使用,而無需在命令列上或環境變數中公開。mysql_config_editor 提供一個 print 命令來顯示登入路徑檔案內容,但即使在這種情況下,密碼值也會被遮罩,以免以其他使用者可以看到的方式顯示。

mysql_config_editor 使用的混淆機制可防止密碼以明文形式出現在 .mylogin.cnf 中,並透過防止意外洩露密碼來提供一定程度的安全性。例如,如果您在螢幕上顯示一般的未混淆 my.cnf 選項檔案,則其中包含的任何密碼都將對所有人可見。使用 .mylogin.cnf 則不是如此,但使用的混淆機制不太可能阻止決心堅定的攻擊者,您不應認為它是牢不可破的。能夠取得您機器上的系統管理員權限以存取您檔案的使用者,可以透過一些努力來解開 .mylogin.cnf 檔案的混淆。

登入路徑檔案必須對目前使用者可讀寫,並且對其他使用者不可存取。否則,mysql_config_editor 會忽略它,並且用戶端程式也不會使用它。

像這樣調用 mysql_config_editor

mysql_config_editor [program_options] command [command_options]

如果登入路徑檔案不存在,mysql_config_editor 會建立它。

命令參數給定如下

  • program_options 包含 mysql_config_editor 的一般選項。

  • command 表示要在 .mylogin.cnf 登入路徑檔案上執行的動作。例如,set 將登入路徑寫入檔案,remove 移除登入路徑,而 print 顯示登入路徑內容。

  • command_options 表示特定於命令的任何其他選項,例如登入路徑名稱和登入路徑中要使用的值。

命令名稱在程式參數集中的位置很重要。例如,以下命令列具有相同的參數,但產生不同的結果

mysql_config_editor --help set
mysql_config_editor set --help

第一個命令列顯示一般 mysql_config_editor 說明訊息,並忽略 set 命令。第二個命令列顯示特定於 set 命令的說明訊息。

假設您要建立一個 client 登入路徑,用於定義您的預設連線參數,以及一個名為 remote 的額外登入路徑,用於連線至主機 remote.example.com 上的 MySQL 伺服器。您希望按以下方式登入

  • 預設情況下,使用使用者名稱和密碼 localuserlocalpass 連線至本機伺服器

  • 使用使用者名稱和密碼 remoteuserremotepass 連線至遠端伺服器

若要在 .mylogin.cnf 檔案中設定登入路徑,請使用下列 set 命令。在單行輸入每個命令,並在提示時輸入適當的密碼

$> mysql_config_editor set --login-path=client
         --host=localhost --user=localuser --password
Enter password: enter password "localpass" here
$> mysql_config_editor set --login-path=remote
         --host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here

mysql_config_editor 預設會使用 client 登入路徑,因此可以從第一個命令中省略 --login-path=client 選項,而不會變更其效果。

若要查看 mysql_config_editor 寫入 .mylogin.cnf 檔案的內容,請使用 print 命令

$> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com

print 命令會將每個登入路徑顯示為一組以方括號中表示登入路徑名稱的群組標頭開頭的行,後跟登入路徑的選項值。密碼值會被遮罩,且不會以明文形式顯示。

如果您未指定 --all 來顯示所有登入路徑,或指定 --login-path=name 來顯示具名登入路徑,則 print 命令預設會顯示 client 登入路徑 (如果有的話)。

如先前的範例所示,登入路徑檔案可以包含多個登入路徑。透過這種方式,mysql_config_editor 可以輕鬆地設定多個「個人檔案」,用於連線至不同的 MySQL 伺服器,或使用不同的帳戶連線至給定的伺服器。在您調用用戶端程式時,可以使用 --login-path 選項,稍後依名稱選擇任何一個。例如,若要連線至遠端伺服器,請使用以下命令

mysql --login-path=remote

在這裡,mysql 從其他選項檔案讀取 [client][mysql] 選項群組,並從登入路徑檔案讀取 [client][mysql][remote] 群組。

若要連線至本機伺服器,請使用以下命令

mysql --login-path=client

因為 mysql 預設會讀取 clientmysql 登入路徑,因此 --login-path 選項在此情況下不會新增任何內容。該命令等效於此命令

mysql

從登入路徑檔案讀取的選項優先於從其他選項檔案讀取的選項。從登入路徑檔案中稍後出現的登入路徑群組讀取的選項,優先於從檔案中較早出現的群組讀取的選項。

mysql_config_editor 會按照您建立登入路徑的順序將其新增至登入路徑檔案,因此您應先建立較一般性的登入路徑,然後再建立較特定的路徑。如果您需要在檔案中移動登入路徑,則可以將其移除,然後重新建立它以將其新增至結尾。例如,client 登入路徑更為一般,因為所有用戶端程式都會讀取它,而 mysqldump 登入路徑僅由 mysqldump 讀取。稍後指定的選項會覆寫先前指定的選項,因此依照 clientmysqldump 的順序放置登入路徑,可讓 mysqldump 特定的選項覆寫 client 選項。

當您將 set 命令與 mysql_config_editor 搭配使用以建立登入路徑時,您不必指定所有可能的選項值 (主機名稱、使用者名稱、密碼、連接埠、socket)。只會將給定的值寫入路徑。當您調用用戶端路徑以連線至 MySQL 伺服器時,可以在其他選項檔案或命令列中指定稍後所需的任何遺失值。命令列上指定的任何選項都會覆寫登入路徑檔案或其他選項檔案中指定的選項。例如,如果 remote 登入路徑中的認證也適用於主機 remote2.example.com,請依以下方式連線至該主機上的伺服器

mysql --login-path=remote --host=remote2.example.com

mysql_config_editor 一般選項

mysql_config_editor 支援以下一般選項,這些選項可以用在命令列上任何命令名稱之前。如需命令特定選項的描述,請參閱 mysql_config_editor 命令和命令特定選項

表 6.18 mysql_config_editor 一般選項

選項名稱 描述
--debug 寫入偵錯記錄
--help 顯示說明訊息並結束
--verbose 詳細模式
--version 顯示版本資訊並結束

  • --help, -?

    命令列格式 --help

    顯示一般說明訊息並結束。

    若要查看命令特定的說明訊息,請按如下方式調用 mysql_config_editor,其中 commandhelp 以外的命令

    mysql_config_editor command --help
  • --debug[=debug_options], -# debug_options

    命令列格式 --debug[=debug_options]
    類型 字串
    預設值 d:t:o

    寫入偵錯記錄。典型的 debug_options 字串為 d:t:o,file_name。預設值為 d:t:o,/tmp/mysql_config_editor.trace

    只有在使用 WITH_DEBUG 建置 MySQL 時,此選項才可用。Oracle 提供的 MySQL 發行二進位檔是使用此選項建置的。

  • --verbose, -v

    命令列格式 --verbose

    詳細模式。列印更多有關程式執行的資訊。如果某項作業沒有達到您預期的效果,此選項可能有助於診斷問題。

  • --version, -V

    命令列格式 --version

    顯示版本資訊並結束。

mysql_config_editor 指令與指令專用選項

本節說明允許的 mysql_config_editor 指令,以及每個指令在命令列上指令名稱後允許的指令專用選項。

此外,mysql_config_editor 支援可在任何指令之前使用的一般選項。 關於這些選項的說明,請參閱 mysql_config_editor 一般選項

mysql_config_editor 支援以下指令

  • help

    顯示一般說明訊息並結束。此指令不接受後續選項。

    若要查看命令特定的說明訊息,請按如下方式調用 mysql_config_editor,其中 commandhelp 以外的命令

    mysql_config_editor command --help
  • print [options]

    以未混淆的形式列印登入路徑檔案的內容,但密碼會顯示為 *****

    如果未命名登入路徑,則預設登入路徑名稱為 client。如果同時給定 --all--login-path,則 --all 優先。

    print 指令允許在指令名稱後接這些選項

    • --help, -?

      顯示 print 指令的說明訊息並結束。

      若要查看一般說明訊息,請使用 mysql_config_editor --help

    • --all

      列印登入路徑檔案中所有登入路徑的內容。

    • --login-path=name, -G name

      列印指定名稱的登入路徑的內容。

  • remove [options]

    從登入路徑檔案中移除登入路徑,或透過移除選項來修改登入路徑。

    此指令只會從登入路徑移除使用 --host--password--port--socket--user 選項指定的選項。如果沒有給定這些選項,remove 會移除整個登入路徑。例如,此指令只會從 mypath 登入路徑中移除 user 選項,而不是整個 mypath 登入路徑

    mysql_config_editor remove --login-path=mypath --user

    此指令會移除整個 mypath 登入路徑

    mysql_config_editor remove --login-path=mypath

    remove 指令允許在指令名稱後接這些選項

    • --help, -?

      顯示 remove 指令的說明訊息並結束。

      若要查看一般說明訊息,請使用 mysql_config_editor --help

    • --host, -h

      從登入路徑中移除主機名稱。

    • --login-path=name, -G name

      要移除或修改的登入路徑。如果未給定此選項,則預設登入路徑名稱為 client

    • --password, -p

      從登入路徑中移除密碼。

    • --port, -P

      從登入路徑中移除 TCP/IP 連接埠號碼。

    • --socket, -S

      從登入路徑中移除 Unix socket 檔案名稱。

    • --user, -u

      從登入路徑中移除使用者名稱。

    • --warn, -w

      如果指令嘗試移除預設登入路徑 (client) 且未指定 --login-path=client,則警告並提示使用者確認。預設啟用此選項;使用 --skip-warn 停用它。

  • reset [options]

    清空登入路徑檔案的內容。

    reset 指令允許在指令名稱後接這些選項

  • set [options]

    將登入路徑寫入登入路徑檔案。

    此指令只會將使用 --host--password--port--socket--user 選項指定的選項寫入登入路徑。如果沒有給定這些選項,mysql_config_editor 會將登入路徑寫為空群組。

    set 指令允許在指令名稱後接這些選項

    • --help, -?

      顯示 set 指令的說明訊息並結束。

      若要查看一般說明訊息,請使用 mysql_config_editor --help

    • --host=host_name, -h host_name

      要寫入登入路徑的主機名稱。

    • --login-path=name, -G name

      要建立的登入路徑。如果未給定此選項,則預設登入路徑名稱為 client

    • --password, -p

      提示輸入要寫入登入路徑的密碼。在 mysql_config_editor 顯示提示後,輸入密碼並按下 Enter 鍵。為了防止其他使用者看到密碼,mysql_config_editor 不會將其回顯。

      若要指定空密碼,請在密碼提示中按下 Enter 鍵。寫入登入路徑檔案的結果登入路徑包含類似這樣的行

      password =
    • --port=port_num, -P port_num

      要寫入登入路徑的 TCP/IP 連接埠號碼。

    • --socket=file_name, -S file_name

      要寫入登入路徑的 Unix socket 檔案名稱。

    • --user=user_name, -u user_name

      要寫入登入路徑的使用者名稱。

    • --warn, -w

      如果指令嘗試覆寫現有的登入路徑,則警告並提示使用者確認。預設啟用此選項;使用 --skip-warn 停用它。