mysql_config_editor 公用程式可讓您將驗證憑證儲存在名為 .mylogin.cnf
的混淆登入路徑檔案中。檔案位置在 Windows 上的 %APPDATA%\MySQL
目錄中,而在非 Windows 系統上則在目前使用者的首目錄中。MySQL 用戶端程式稍後可以讀取該檔案,以取得連線至 MySQL 伺服器的驗證憑證。
.mylogin.cnf
登入路徑檔案的非混淆格式包含選項群組,類似於其他選項檔案。.mylogin.cnf
中的每個選項群組都稱為 「登入路徑」,這是一個僅允許特定選項的群組:host
、user
、password
、port
和 socket
。將登入路徑選項群組視為一組選項,這些選項指定要連線的 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 用戶端 (例如 mysql、mysqladmin 等),以及 mysql-test-run.pl 測試公用程式識別。
程式會如下使用登入路徑檔案中的群組
如果您未指定任何
--login-path=
選項來明確指出要使用的登入路徑,則 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 伺服器。您想要以下列方式登入
預設情況下,使用使用者名稱和密碼
localuser
和localpass
連線到本機伺服器使用使用者名稱和密碼
remoteuser
和remotepass
連線到遠端伺服器
若要在 .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 預設會讀取 client
和 mysql
登入路徑,所以在這種情況下,--login-path
選項不會增加任何內容。該命令等同於以下這個命令
mysql
從登入路徑檔案讀取的選項優先於從其他選項檔案讀取的選項。從登入路徑檔案中稍後出現的登入路徑群組讀取的選項優先於從檔案中較早出現的群組讀取的選項。
mysql_config_editor 會按照您建立登入路徑的順序將其新增到登入路徑檔案中,因此您應該先建立較為通用的登入路徑,然後再建立較為特定的路徑。如果您需要在檔案中移動登入路徑,可以先移除它,然後重新建立它以將其新增到末尾。例如,client
登入路徑較為通用,因為所有客戶端程式都會讀取它,而 mysqldump
登入路徑僅由 mysqldump 讀取。稍後指定的選項會覆寫先前指定的選項,因此將登入路徑依 client
、mysqldump
的順序排列,可讓 mysqldump 特有的選項覆寫 client
選項。
當您使用 mysql_config_editor 的 set
命令來建立登入路徑時,您不需要指定所有可能的選項值 (主機名稱、使用者名稱、密碼、連接埠、socket)。只有指定的值才會寫入路徑。稍後需要的任何遺失值都可以在您叫用客戶端路徑連線到 MySQL 伺服器時指定,無論是在其他選項檔案中還是在命令行上。在命令行上指定的任何選項都會覆寫在登入路徑檔案或其他選項檔案中指定的選項。例如,如果 remote
登入路徑中的認證也適用於主機 remote2.example.com
,請依以下方式連線到該主機上的伺服器
mysql --login-path=remote --host=remote2.example.com
mysql_config_editor 一般選項
mysql_config_editor 支援以下一般選項,這些選項可以在命令行上任何已命名的命令之前使用。如需命令特定選項的說明,請參閱mysql_config_editor 命令和命令特定選項。
--help
、-?
命令行格式 --help
顯示一般說明訊息並結束。
若要查看命令特定的說明訊息,請依如下方式叫用 mysql_config_editor,其中
command
是help
以外的命令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
。只有在 MySQL 是使用
WITH_DEBUG
建置時,此選項才可用。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,其中
command
是help
以外的命令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
指令允許在指令名稱後加上這些選項--help
、-?
顯示
reset
指令的說明訊息並結束。若要查看一般說明訊息,請使用 mysql_config_editor --help。
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
來停用它。