本節說明大多數 MySQL 用戶端程式所支援的選項,這些選項控制用戶端程式如何建立與伺服器的連線、連線是否加密以及連線是否壓縮。這些選項可以在命令列或選項檔案中指定。
本節說明控制用戶端程式如何建立與伺服器連線的選項。如需其他資訊和顯示如何使用這些選項的範例,請參閱第 6.2.4 節,「使用命令選項連線到 MySQL 伺服器」。
表 6.4 連線建立選項摘要
| 選項名稱 | 描述 |
|---|---|
| --default-auth | 要使用的驗證外掛程式 |
| --host | MySQL 伺服器所在的主機 |
| --password | 連接到伺服器時要使用的密碼 |
| --password1 | 連接到伺服器時要使用的第一個多重因素驗證密碼 |
| --password2 | 連接到伺服器時要使用的第二個多重因素驗證密碼 |
| --password3 | 連接到伺服器時要使用的第三個多重因素驗證密碼 |
| --pipe | 使用具名管道連接到伺服器 (僅限 Windows) |
| --plugin-dir | 安裝外掛程式的目錄 |
| --port | 連線的 TCP/IP 通訊埠號碼 |
| --protocol | 要使用的傳輸協定 |
| --shared-memory-base-name | 用於共用記憶體連線的共用記憶體名稱 (僅限 Windows) |
| --socket | 要使用的 Unix socket 檔案或 Windows 具名管道 |
| --user | 連接到伺服器時要使用的 MySQL 使用者名稱 |
-
命令列格式 --default-auth=plugin類型 字串 關於要使用哪個用戶端驗證外掛程式的提示。請參閱第 8.2.17 節,「可插拔驗證」。
--host=,host_name-hhost_name命令列格式 --host=host_name類型 字串 預設值 localhost執行 MySQL 伺服器的主機。該值可以是主機名稱、IPv4 位址或 IPv6 位址。預設值為
localhost。--password[=,pass_val]-p[pass_val]命令列格式 --password[=password]類型 字串 預設值 [無]用於連接到伺服器的 MySQL 帳戶的密碼。密碼值是選用的。如果未指定,用戶端程式會提示輸入密碼。如果指定,在
--password=或-p與其後的密碼之間不能有空格。如果未指定密碼選項,則預設為不傳送密碼。在命令列上指定密碼應被視為不安全。若要避免在命令列上提供密碼,請使用選項檔案。請參閱第 8.1.2.1 節,「密碼安全性的終端使用者指南」。
若要明確指定沒有密碼,且用戶端程式不應提示輸入密碼,請使用
--skip-password選項。-
命令列格式 --password1[=password]類型 字串 用於連接到伺服器的 MySQL 帳戶的多重因素驗證因素 1 的密碼。密碼值是選用的。如果未指定,用戶端程式會提示輸入密碼。如果指定,在
--password1=與其後的密碼之間不能有空格。如果未指定密碼選項,則預設為不傳送密碼。在命令列上指定密碼應被視為不安全。若要避免在命令列上提供密碼,請使用選項檔案。請參閱第 8.1.2.1 節,「密碼安全性的終端使用者指南」。
若要明確指定沒有密碼,且用戶端程式不應提示輸入密碼,請使用
--skip-password1選項。--password1和--password是同義詞,--skip-password1和--skip-password也是同義詞。 -
命令列格式 --password2[=password]類型 字串 用於連接到伺服器的 MySQL 帳戶的多重因素驗證因素 2 的密碼。此選項的語意與
--password1的語意相似;請參閱該選項的說明以瞭解詳細資訊。 -
命令列格式 --password3[=password]類型 字串 用於連接到伺服器的 MySQL 帳戶的多重因素驗證因素 3 的密碼。此選項的語意與
--password1的語意相似;請參閱該選項的說明以瞭解詳細資訊。 --pipe,-W命令列格式 --pipe類型 字串 在 Windows 上,使用具名管道連線到伺服器。只有在伺服器啟動時啟用
named_pipe系統變數以支援具名管道連線時,此選項才適用。此外,建立連線的使用者必須是named_pipe_full_access_group系統變數指定的 Windows 群組的成員。-
命令列格式 --plugin-dir=dir_name類型 目錄名稱 要尋找外掛程式的目錄。如果
--default-auth選項用於指定驗證外掛程式,但用戶端程式找不到它,請指定此選項。請參閱 第 8.2.17 節「可插拔驗證」。 --port=,port_num-Pport_num命令列格式 --port=port_num類型 數值 預設值 3306對於 TCP/IP 連線,要使用的埠號。預設的埠號為 3306。
--protocol={TCP|SOCKET|PIPE|MEMORY}命令列格式 --protocol=type類型 字串 預設值 [請參閱文字]有效值 TCPSOCKETPIPEMEMORY此選項明確指定要用於連線到伺服器的傳輸協定。當其他連線參數通常導致使用您不想要的協定時,此選項很有用。例如,在 Unix 上連線到
localhost預設會使用 Unix socket 檔案。mysql --host=localhost若要強制改為使用 TCP/IP 傳輸,請指定
--protocol選項mysql --host=localhost --protocol=TCP下表顯示允許的
--protocol選項值,並指出每個值適用的平台。這些值不區分大小寫。--protocol值使用的傳輸協定 適用的平台 TCP本機或遠端伺服器的 TCP/IP 傳輸 全部 SOCKET本機伺服器的 Unix socket 檔案傳輸 Unix 和類 Unix 系統 PIPE本機伺服器的具名管道傳輸 Windows MEMORY本機伺服器的共用記憶體傳輸 Windows 另請參閱 第 6.2.7 節「連線傳輸協定」
--shared-memory-base-name=name命令列格式 --shared-memory-base-name=name平台特定 Windows 在 Windows 上,使用共用記憶體連線到本機伺服器時要使用的共用記憶體名稱。預設值為
MYSQL。共用記憶體名稱區分大小寫。只有在伺服器啟動時啟用
shared_memory系統變數以支援共用記憶體連線時,此選項才適用。--socket=,path-Spath命令列格式 --socket={file_name|pipe_name}類型 字串 在 Unix 上,使用具名管道連線到本機伺服器時要使用的 Unix socket 檔案名稱。預設的 Unix socket 檔案名稱為
/tmp/mysql.sock。在 Windows 上,連線到本機伺服器時要使用的具名管道名稱。預設的 Windows 管道名稱為
MySQL。管道名稱不區分大小寫。在 Windows 上,只有在伺服器啟動時啟用
named_pipe系統變數以支援具名管道連線時,此選項才適用。此外,建立連線的使用者必須是named_pipe_full_access_group系統變數指定的 Windows 群組的成員。--user=,user_name-uuser_name命令列格式 --user=user_name類型 字串 用於連線到伺服器的 MySQL 帳戶的使用者名稱。在 Windows 上,預設使用者名稱為
ODBC,在 Unix 上則為您的 Unix 登入名稱。
本節說明用戶端程式的選項,這些選項指定是否使用加密連線到伺服器、憑證和金鑰檔案的名稱,以及與加密連線支援相關的其他參數。如需建議的使用範例以及如何檢查連線是否已加密,請參閱第 8.3.1 節「設定 MySQL 以使用加密連線」。
這些選項僅對使用受加密影響的傳輸協定(即 TCP/IP 和 Unix socket 檔案連線)的連線有效。請參閱 第 6.2.7 節「連線傳輸協定」
如需有關從 MySQL C API 使用加密連線的資訊,請參閱對加密連線的支援。
表 6.5 連線加密選項摘要
| 選項名稱 | 描述 |
|---|---|
| --get-server-public-key | 從伺服器請求 RSA 公開金鑰 |
| --server-public-key-path | 包含 RSA 公開金鑰的檔案路徑名稱 |
| --ssl-ca | 包含受信任 SSL 憑證授權單位清單的檔案 |
| --ssl-capath | 包含受信任 SSL 憑證授權單位憑證檔案的目錄 |
| --ssl-cert | 包含 X.509 憑證的檔案 |
| --ssl-cipher | 連線加密允許的密碼 |
| --ssl-crl | 包含憑證撤銷清單的檔案 |
| --ssl-crlpath | 包含憑證撤銷清單檔案的目錄 |
| --ssl-fips-mode | 是否在用戶端啟用 FIPS 模式 |
| --ssl-key | 包含 X.509 金鑰的檔案 |
| --ssl-mode | 連線到伺服器的所需安全狀態 |
| --ssl-session-data | 包含 SSL 工作階段資料的檔案 |
| --ssl-session-data-continue-on-failed-reuse | 在工作階段重複使用失敗時是否建立連線 |
| --tls-ciphersuites | 加密連線允許的 TLSv1.3 密碼套件 |
| --tls-version | 加密連線允許的 TLS 協定 |
-
命令列格式 --get-server-public-key類型 布林值 從伺服器請求 RSA 金鑰配對式密碼交換所需的公開金鑰。此選項適用於使用
caching_sha2_password驗證外掛程式驗證的用戶端。對於該外掛程式,除非要求,否則伺服器不會傳送公開金鑰。對於未使用該外掛程式驗證的帳戶,將會忽略此選項。如果未使用基於 RSA 的密碼交換,也會忽略此選項,例如當用戶端使用安全連線連線到伺服器時。如果提供
--server-public-key-path=,並指定有效的公開金鑰檔案,則其優先於file_name--get-server-public-key。如需有關
caching_sha2_password外掛程式的資訊,請參閱 第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。 --server-public-key-path=file_name命令列格式 --server-public-key-path=file_name類型 檔案名稱 包含伺服器基於 RSA 金鑰配對式密碼交換所需的公開金鑰的用戶端副本的 PEM 格式檔案的路徑名稱。此選項適用於使用
sha256_password或caching_sha2_password驗證外掛程式驗證的用戶端。對於未使用這些外掛程式之一驗證的帳戶,將會忽略此選項。如果未使用基於 RSA 的密碼交換,也會忽略此選項,例如當用戶端使用安全連線連線到伺服器時。如果提供
--server-public-key-path=,並指定有效的公開金鑰檔案,則其優先於file_name--get-server-public-key。只有在使用 OpenSSL 建置 MySQL 時,此選項才可用。
如需有關
sha256_password和caching_sha2_password外掛程式的資訊,請參閱 第 8.4.1.2 節「SHA-256 可插拔驗證」和 第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。-
命令列格式 --ssl-ca=file_name類型 檔案名稱 PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑名稱。該檔案包含受信任 SSL 憑證授權單位的清單。
若要告知用戶端在建立與伺服器的加密連線時不要驗證伺服器憑證,請勿指定
--ssl-ca和--ssl-capath。伺服器仍然會根據為用戶端帳戶建立的任何適用要求來驗證用戶端,並且仍然會使用在伺服器端指定的任何ssl_ca或ssl_capath系統變數值。若要指定伺服器的 CA 檔案,請設定
ssl_ca系統變數。 -
命令列格式 --ssl-capath=dir_name類型 目錄名稱 包含 PEM 格式的受信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄的路徑名稱。
若要告知用戶端在建立與伺服器的加密連線時不要驗證伺服器憑證,請勿指定
--ssl-ca和--ssl-capath。伺服器仍然會根據為用戶端帳戶建立的任何適用要求來驗證用戶端,並且仍然會使用在伺服器端指定的任何ssl_ca或ssl_capath系統變數值。若要指定伺服器的 CA 目錄,請設定
ssl_capath系統變數。 -
命令列格式 --ssl-cert=file_name類型 檔案名稱 以 PEM 格式表示的用戶端 SSL 公開金鑰憑證檔案的路徑名稱。支援鏈結的 SSL 憑證。
若要指定伺服器 SSL 公開金鑰憑證檔案,請設定
ssl_cert系統變數。 -
命令列格式 --ssl-cipher=名稱類型 字串 使用 TLS 協定(最高至 TLSv1.2)的連線可允許的加密密碼清單。如果清單中沒有支援的密碼,則使用這些 TLS 協定的加密連線將無法運作。
為了獲得最佳的可攜性,
cipher_list應該是一個或多個以冒號分隔的密碼名稱清單。例如:--ssl-cipher=AES128-SHA --ssl-cipher=DHE-RSA-AES128-GCM-SHA256:AES128-SHAOpenSSL 支援在 OpenSSL 文件 https://www.openssl.org/docs/manmaster/man1/ciphers.html 中描述的指定密碼語法。
有關 MySQL 支援哪些加密密碼的資訊,請參閱 第 8.3.2 節「加密連線 TLS 協定和密碼」。
若要指定伺服器的加密密碼,請設定
ssl_cipher系統變數。 -
命令列格式 --ssl-crl=檔案名稱類型 檔案名稱 包含以 PEM 格式表示的憑證撤銷清單的檔案路徑名稱。
如果沒有提供
--ssl-crl或--ssl-crlpath,則即使 CA 路徑包含憑證撤銷清單,也不會執行 CRL 檢查。若要指定伺服器的撤銷清單檔案,請設定
ssl_crl系統變數。 -
命令列格式 --ssl-crlpath=目錄名稱類型 目錄名稱 包含以 PEM 格式表示的憑證撤銷清單檔案的目錄路徑名稱。
如果沒有提供
--ssl-crl或--ssl-crlpath,則即使 CA 路徑包含憑證撤銷清單,也不會執行 CRL 檢查。若要指定伺服器的撤銷清單目錄,請設定
ssl_crlpath系統變數。 --ssl-fips-mode={OFF|ON|STRICT}命令列格式 --ssl-fips-mode={OFF|ON|STRICT}已棄用 是 類型 列舉 預設值 OFF有效值 OFFONSTRICT控制是否在用戶端啟用 FIPS 模式。
--ssl-fips-mode選項與其他--ssl-選項不同,它不是用於建立加密連線,而是用於影響允許哪些加密操作。請參閱 第 8.8 節「FIPS 支援」。xxx允許使用這些
--ssl-fips-mode值OFF:停用 FIPS 模式。ON:啟用 FIPS 模式。STRICT:啟用「嚴格」FIPS 模式。
注意如果 OpenSSL FIPS 物件模組不可用,則
--ssl-fips-mode唯一允許的值為OFF。在這種情況下,將--ssl-fips-mode設定為ON或STRICT會導致用戶端在啟動時產生警告,並在非 FIPS 模式下運作。若要指定伺服器的 FIPS 模式,請設定
ssl_fips_mode系統變數。-
命令列格式 --ssl-key=檔案名稱類型 檔案名稱 以 PEM 格式表示的用戶端 SSL 私密金鑰檔案路徑名稱。為了提高安全性,請使用 RSA 金鑰大小至少為 2048 位元的憑證。
如果金鑰檔案受到密碼保護,用戶端程式會提示使用者輸入密碼。密碼必須以互動方式輸入,不能儲存在檔案中。如果密碼不正確,程式會繼續執行,就好像無法讀取金鑰一樣。
若要指定伺服器 SSL 私密金鑰檔案,請設定
ssl_key系統變數。 -
命令列格式 --ssl-mode=模式類型 列舉 預設值 PREFERRED有效值 DISABLEDPREFERREDREQUIREDVERIFY_CAVERIFY_IDENTITY此選項指定與伺服器連線所需的安全性狀態。這些模式值是允許的,依嚴格程度遞增排序:
DISABLED:建立未加密的連線。PREFERRED:如果伺服器支援加密連線,則建立加密連線;如果無法建立加密連線,則回退為未加密的連線。如果未指定--ssl-mode,則這是預設值。透過 Unix socket 檔案的連線不會以
PREFERRED模式加密。若要強制執行 Unix socket 檔案連線的加密,請使用REQUIRED或更嚴格的模式。(但是,socket 檔案傳輸預設是安全的,因此加密 socket 檔案連線不會使其更安全,反而會增加 CPU 負載。)REQUIRED:如果伺服器支援加密連線,則建立加密連線。如果無法建立加密連線,則連線嘗試將會失敗。VERIFY_CA:與REQUIRED類似,但另外會根據設定的 CA 憑證驗證伺服器憑證授權單位 (CA) 憑證。如果找不到任何有效的比對 CA 憑證,連線嘗試將會失敗。VERIFY_IDENTITY:與VERIFY_CA類似,但另外會執行主機名稱身分驗證,方法是檢查用戶端用於連線至伺服器的主機名稱,是否與伺服器傳送給用戶端的憑證中的身分一致。如果用戶端使用 OpenSSL 1.0.2 或更高版本,用戶端會檢查它用於連線的主機名稱是否與伺服器憑證中的主體替代名稱值或通用名稱值一致。主機名稱身分驗證也適用於使用萬用字元指定通用名稱的憑證。
否則,用戶端會檢查它用於連線的主機名稱是否與伺服器憑證中的通用名稱值一致。
如果存在不符的情況,連線會失敗。對於加密連線,此選項有助於防止中間人攻擊。
注意使用
VERIFY_IDENTITY的主機名稱身分驗證不適用於由伺服器自動建立的自我簽署憑證(請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證與金鑰」)。這類自我簽署憑證不包含伺服器名稱作為通用名稱值。
重要如果其他預設設定未變更,預設設定
--ssl-mode=PREFERRED會產生加密連線。但是,為了協助防止複雜的中間人攻擊,用戶端驗證伺服器的身分非常重要。--ssl-mode=VERIFY_CA和--ssl-mode=VERIFY_IDENTITY設定是比預設設定更好的選擇,有助於防止這種類型的攻擊。若要實作這些設定之一,您必須先確保伺服器的 CA 憑證可供您環境中所有使用它的用戶端可靠地使用,否則將會導致可用性問題。因此,它們不是預設設定。--ssl-mode選項與 CA 憑證選項的互動方式如下:如果沒有明確設定
--ssl-mode,則使用--ssl-ca或--ssl-capath隱含--ssl-mode=VERIFY_CA。對於
--ssl-mode的VERIFY_CA或VERIFY_IDENTITY值,也需要--ssl-ca或--ssl-capath,以提供與伺服器使用的 CA 憑證相符的憑證。明確使用值不是
VERIFY_CA或VERIFY_IDENTITY的--ssl-mode選項,以及明確的--ssl-ca或--ssl-capath選項,會產生警告,表示儘管指定了 CA 憑證選項,但並未執行伺服器憑證的驗證。
若要要求 MySQL 帳戶使用加密連線,請使用
CREATE USER以REQUIRE SSL子句建立帳戶,或對現有帳戶使用ALTER USER以新增REQUIRE SSL子句。這會導致使用該帳戶的用戶端連線嘗試遭到拒絕,除非 MySQL 支援加密連線,而且可以建立加密連線。REQUIRE子句允許其他與加密相關的選項,可用於強制執行比REQUIRE SSL更嚴格的安全性要求。如需更多關於使用各種REQUIRE選項設定的帳戶連線的用戶端可能或必須指定的命令選項的詳細資訊,請參閱 CREATE USER SSL/TLS 選項。 -
命令列格式 --ssl-session-data=檔案名稱類型 檔案名稱 以 PEM 格式表示的用戶端 SSL 工作階段資料檔案路徑名稱,用於工作階段重複使用。
當您使用
--ssl-session-data選項叫用 MySQL 用戶端程式時,用戶端會嘗試從檔案還原序列化工作階段資料(如果有的話),然後使用它來建立新的連線。如果您提供一個檔案,但工作階段未重複使用,則連線會失敗,除非您在叫用用戶端程式時也在命令列上指定了--ssl-session-data-continue-on-failed-reuse選項。mysql 命令、
ssl_session_data_print會產生工作階段資料檔案(請參閱第 6.5.1.2 節「mysql 用戶端命令」)。 ssl-session-data-continue-on-failed-reuse命令列格式 --ssl-session-data-continue-on-failed-reuse類型 布林值 預設值 OFF控制是否啟動新的連線,以取代嘗試連線時,因無法重複使用以
--ssl-session-data命令列選項指定的會期資料而失敗的連線。預設情況下,--ssl-session-data-continue-on-failed-reuse命令列選項是關閉的,這會導致當提供會期資料且無法重複使用時,用戶端程式傳回連線失敗。為了確保在會期重複使用失敗後,能靜默地開啟新的、不相關的連線,請使用
--ssl-session-data和--ssl-session-data-continue-on-failed-reuse命令列選項來調用 MySQL 用戶端程式。--tls-ciphersuites=ciphersuite_list命令列格式 --tls-ciphersuites=ciphersuite_list類型 字串 預設值 空字串此選項指定用戶端允許哪些密碼套件用於使用 TLSv1.3 的加密連線。該值是一個或多個以冒號分隔的密碼套件名稱列表。例如
mysql --tls-ciphersuites="suite1:suite2:suite3"此選項可指定的密碼套件取決於用於編譯 MySQL 的 SSL 函式庫。如果未設定此選項,則用戶端允許使用預設的密碼套件集。如果將此選項設定為空字串,則不會啟用任何密碼套件,並且無法建立加密連線。如需更多資訊,請參閱第 8.3.2 節「加密連線 TLS 協定與密碼」。
若要指定伺服器允許哪些密碼套件,請設定
tls_ciphersuites系統變數。-
命令列格式 --tls-version=protocol_list類型 字串 預設值 TLSv1,TLSv1.1,TLSv1.2,TLSv1.3(OpenSSL 1.1.1 或更高版本)TLSv1,TLSv1.1,TLSv1.2(其他情況)此選項指定用戶端允許哪些 TLS 協定用於加密連線。該值是一個或多個以逗號分隔的協定版本列表。例如
mysql --tls-version="TLSv1.2,TLSv1.3"此選項可指定的協定取決於用於編譯 MySQL 的 SSL 函式庫,以及 MySQL 伺服器版本。
重要支援
--tls-version選項的用戶端(包括 MySQL Shell)無法使用設定為 TLSv1 或 TLSv1.1 的協定建立 TLS/SSL 連線。如果用戶端嘗試使用這些協定連線,對於 TCP 連線,連線會失敗,並將錯誤傳回給用戶端。對於 Socket 連線,如果--ssl-mode設定為REQUIRED,則連線會失敗,否則會建立連線,但會停用 TLS/SSL。如需更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 協定的支援。如果 MySQL 伺服器是使用 OpenSSL 1.1.1 或更高版本編譯的,則 MySQL 伺服器支援 TLSv1.3 協定。伺服器會在啟動時檢查 OpenSSL 的版本,如果低於 1.1.1,則會從與 TLS 版本相關的伺服器系統變數(例如
tls_version系統變數)的預設值中移除 TLSv1.3。
應選擇允許的協定,使其列表不留有「漏洞」。例如,以下這些值沒有漏洞
--tls-version="TLSv1.2,TLSv1.3" --tls-version="TLSv1.3"詳細資訊,請參閱第 8.3.2 節「加密連線 TLS 協定與密碼」。
若要指定伺服器允許哪些 TLS 協定,請設定
tls_version系統變數。
本節說明可讓用戶端程式控制與伺服器連線時是否使用壓縮的選項。如需額外資訊和顯示如何使用它們的範例,請參閱第 6.2.8 節「連線壓縮控制」。
表 6.6 連線壓縮選項摘要
| 選項名稱 | 描述 |
|---|---|
| --compress | 壓縮用戶端和伺服器之間傳送的所有資訊 |
| --compression-algorithms | 允許用於連線至伺服器的壓縮演算法 |
| --zstd-compression-level | 使用 zstd 壓縮的伺服器連線壓縮層級 |
--compress,-C命令列格式 --compress[={OFF|ON}]已棄用 是 類型 布林值 預設值 OFF盡可能壓縮用戶端和伺服器之間傳送的所有資訊。
此選項已過時。預計將在未來版本的 MySQL 中移除。請參閱設定舊版連線壓縮。
--compression-algorithms=value命令列格式 --compression-algorithms=value類型 設定 預設值 uncompressed有效值 zlibzstduncompressed允許用於連線至伺服器的壓縮演算法。可用的演算法與
protocol_compression_algorithms系統變數相同。預設值為uncompressed。--zstd-compression-level=level命令列格式 --zstd-compression-level=#類型 整數 使用
zstd壓縮演算法連線至伺服器時使用的壓縮層級。允許的層級為 1 到 22,較大的值表示較高的壓縮層級。預設的zstd壓縮層級為 3。壓縮層級設定對未使用zstd壓縮的連線沒有影響。