當連線到已啟用 TLS(有時稱為 SSL)的 MySQL 伺服器時,可以使用加密連線。MySQL Shell 的許多組態都基於 MySQL 伺服器使用的選項,如需更多資訊,請參閱使用加密連線。
若要在 MySQL Shell 啟動時設定加密連線,請使用下列命令選項
--ssl-mode
:此選項指定連線至伺服器的所需安全性狀態。--ssl-ca=
:PEM 格式檔案的路徑,其中包含信任的 SSL 憑證授權單位清單。file_name
--ssl-capath=
:目錄的路徑,其中包含 PEM 格式的信任的 SSL 憑證授權單位憑證。dir_name
--ssl-cert=
:PEM 格式的 SSL 憑證檔案名稱,用於建立加密連線。file_name
--ssl-cipher=
:用於建立加密連線的 SSL 加密名稱。name
--ssl-key=
:PEM 格式的 SSL 金鑰檔案名稱,用於建立加密連線。file_name
--ssl-crl=
:包含 PEM 格式憑證撤銷清單的檔案路徑。name
--ssl-crlpath=
:目錄的路徑,其中包含 PEM 格式的憑證撤銷清單檔案。dir_name
--tls-ciphersuites=
:允許用於加密連線的 TLS 加密套件,指定為以冒號分隔的 TLS 加密套件名稱清單。例如suites
--tls-ciphersuites=
。TLS_DHE_PSK_WITH_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256
-
--tls-version=
:允許用於加密連線的 TLS 通訊協定,指定為以逗號分隔的清單。例如version
--tls-version=
。TLSv1.2,TLSv1.3
從 MySQL 8.0.28 開始,MySQL 伺服器不支援 TLSv1 和 TLSv1.1 通訊協定,且 MySQL Shell 無法使用設定為 TLSv1 或 TLSv1.1 的通訊協定建立 TLS/SSL 連線。如果您嘗試從任何版本的 MySQL Shell 使用 TLS/SSL 連線至 8.0.28 或以上的 MySQL 伺服器執行個體,並且使用
--tls-version
選項指定 TLSv1 或 TLSv1.1 通訊協定,您將會看到以下結果對於 TCP 連線,連線會失敗,並且會將錯誤傳回 MySQL Shell。
對於 Socket 連線,如果
--ssl-mode
設定為REQUIRED
,則連線會失敗。如果--ssl-mode
未設定為REQUIRED
,則會建立連線,但會停用 TLS/SSL。
TLSv1 和 TLSv1.1 通訊協定從 MySQL 8.0.26 開始已棄用。如需背景資訊,請參閱 IETF 備忘錄棄用 TLSv1.0 和 TLSv1.1。在 MySQL Shell 和 MySQL 伺服器之間使用更安全的 TLSv1.2 和 TLSv1.3 通訊協定建立連線。TLSv1.3 要求 MySQL 伺服器和用戶端應用程式都必須使用 OpenSSL 1.1.1 或更高版本編譯。如需 MySQL 伺服器版本中 TLS 通訊協定版本支援的詳細資訊,請參閱移除對 TLSv1 和 TLSv1.1 通訊協定的支援。
或者,SSL 選項可以編碼為 URI 式連線字串的一部分,作為查詢元素的一部分。可用的 SSL 選項與上面列出的相同,但寫入時沒有前導連字號。例如,ssl-ca
等同於 --ssl-ca
。
URI 式字串中指定的路徑必須經過百分比編碼,例如
ssluser@127.0.0.1?ssl-ca%3D%2Froot%2Fclientcert%2Fca-cert.pem%26ssl-cert%3D%2Fro\
ot%2Fclientcert%2Fclient-cert.pem%26ssl-key%3D%2Froot%2Fclientcert%2Fclient-key
.pem
如需更多資訊,請參閱使用 URI 式字串或索引鍵/值組連線至伺服器。
若要在 JavaScript 或 Python 模式中為指令碼工作階段建立加密連線,請在 connectionData
字典中設定 SSL 資訊。例如
mysql-js> var session=mysqlx.getSession({host: 'localhost',
user: 'root',
password: 'password',
ssl_ca: "path_to_ca_file",
ssl_cert: "path_to_cert_file",
ssl_key: "path_to_key_file"});
如果未提供 ssl-mode
,且未提供 ssl-ca
或 ssl-capath
,則使用 mysqlx.getSession()
、mysql.getSession()
或 mysql.getClassicSession()
建立的工作階段會使用 ssl-mode=REQUIRED
作為預設值。如果未提供 ssl-mode
,且提供任何 ssl-ca
或 ssl-capath
,則建立的工作階段預設為 ssl-mode=VERIFY_CA
。
如需更多資訊,請參閱使用索引鍵/值組連線。