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 預設會對name
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
選項。
當您將 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 命令和命令特定選項。
--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
。只有在使用
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,其中
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
停用它。