MySQL Shell 8.4  /  MySQL Shell 命令參考  /  mysqlsh — MySQL Shell

A.1 mysqlsh — MySQL Shell

MySQL Shell 是 MySQL 的進階命令列用戶端和程式碼編輯器。除了 SQL 之外,MySQL Shell 還提供 JavaScript 和 Python 的腳本功能。如需使用 MySQL Shell 的相關資訊,請參閱MySQL Shell 8.4.0。當 MySQL Shell 透過 X Protocol 連線至 MySQL 伺服器時,可以使用 X DevAPI 來處理關係資料和文件資料,請參閱將 MySQL 作為文件儲存區使用。MySQL Shell 包含 AdminAPI,可讓您處理 InnoDB 叢集、InnoDB 叢集集合和 InnoDB 複本集合部署;請參閱第 6 章,MySQL AdminAPI

此處說明的許多選項都與 MySQL Shell 和 MySQL 伺服器執行個體之間的連線相關。請參閱第 4.3 節,〈MySQL Shell 連線〉以取得更多資訊。

mysqlsh 支援下列命令列選項。

表 A.1 mysqlsh 選項

選項名稱 描述
-- API 命令列整合的開始
--auth-method 要使用的驗證方法
--authentication-oci-client-config-profile OCI 組態檔案中的設定檔
--cluster 連線至 InnoDB 叢集
--column-type-info 列印結果集中資料行的中繼資料
--compress 壓縮用戶端和伺服器之間傳送的所有資訊
--connect-timeout 全域工作階段的連線逾時
--credential-store-helper 密碼的密碼儲存協助程式
--database 要使用的綱要 (別名為 --schema)
--dba 在與 MySQL 5.7 伺服器連線時啟用 X Protocol
--execute 執行命令並結束
--file 在批次模式中處理的檔案
--force 即使發生錯誤,仍繼續以 SQL 和批次模式執行
--get-server-public-key 從伺服器請求 RSA 公開金鑰
--help 顯示說明訊息並結束
--histignore 不會加入歷程記錄的字串
--host MySQL 伺服器執行個體所在的的主機
--interactive 在批次模式中模擬互動模式
--js--javascript 以 JavaScript 模式啟動
--json 以 JSON 格式列印輸出
--log-file 此執行個體的記錄檔位置
--log-level 指定記錄層級
--log-sql 將所有 MySQL Shell 產生的 SQL 陳述式記錄到 MySQL Shell 記錄檔。
--mysql-mc 使用傳統 MySQL 通訊協定建立工作階段
--mysql-plugin-dir 用戶端外掛程式安裝所在的目錄
--mysqlx-mx 使用 X Protocol 建立工作階段
--name-cache 根據使用中的預設綱要啟用自動載入資料表名稱
--no-name-cache 停用自動完成
--no-password 未提供此連線的密碼
--no-wizard--nw 停用互動式精靈
--oci-config-file 要使用的 OCI 組態檔案路徑
--pager 用於顯示輸出的外部分頁工具
--password 連線至伺服器時要使用的密碼
--password1 多因素驗證的密碼 1 (相當於 --password)
--password2 多因素驗證的密碼 2
--password3 多因素驗證的密碼 3
--passwords-from-stdin 從 stdin 讀取密碼
--plugin-authentication-webauthn-client-preserve-privacy 啟用使用者選擇用於判斷提示的金鑰
--port 連線的 TCP/IP 連接埠號碼
--py--python 以 Python 模式啟動
--pyc 執行 Python 命令並結束。在此之後指定的任何選項都會被視為已處理命令的引數。
--quiet-start 啟動時不列印簡介資訊
--redirect-primary 確保連線至 InnoDB 叢集的主要成員
--redirect-secondary 確保連線至 InnoDB 叢集的次要成員
--register-factor 必須完成註冊的多因素驗證因素
--result-format 設定此工作階段的輸出格式
--save-passwords 密碼在密碼儲存區中的儲存方式
--schema 要使用的綱要
--server-public-key-path 包含 RSA 公開金鑰的檔案路徑名稱
--show-warnings 如果有的話,在每個陳述式之後顯示警告 (以 SQL 模式)
--socket 要使用的 Unix socket 檔案或 Windows 具名管道 (僅限傳統 MySQL 通訊協定)
--sql 以 SQL 模式啟動,自動偵測要用於連線的通訊協定
--sqlc 使用傳統 MySQL 通訊協定連線以 SQL 模式啟動
--sqlx 使用 X Protocol 連線以 SQL 模式啟動
--ssh 連線至 SSH 伺服器的 URI
--ssh-config-file 連線至 SSH 伺服器的組態檔案
--ssh-identity-file 連線至 SSH 伺服器的身分檔案
--ssl-ca 包含受信任 SSL 憑證授權單位清單的檔案
--ssl-capath 包含受信任 SSL 憑證授權單位憑證檔案的目錄
--ssl-cert 包含 X.509 憑證的檔案
--ssl-cipher 要使用的 SSL 密碼名稱
--ssl-crl 包含憑證撤銷清單的檔案
--ssl-crlpath 包含憑證撤銷清單檔案的目錄
--ssl-key 包含 X.509 金鑰的檔案
--ssl-mode 連線至伺服器的所需安全性狀態
--syslog 將互動式 SQL 陳述式記錄至系統記錄設施
--tabbed 以 Tab 分隔格式顯示輸出
--table 以表格格式顯示輸出
--tls-version 加密連線允許的 TLS 通訊協定
--uri URI 格式的工作階段資訊
--user 連線至伺服器時要使用的 MySQL 使用者名稱
--verbose 啟用主控台的詳細輸出
--version 顯示版本資訊並結束
--vertical 垂直顯示所有 SQL 結果

  • --help-?

    顯示說明訊息並結束。

  • --

    標示 mysqlsh 選項清單的結尾,以及 MySQL Shell API 命令列整合的命令及其引數的開頭。您可以使用此語法,從命令列執行 MySQL Shell 全域物件的方法

    mysqlsh [options]  -- object method [arguments]

    如需更多資訊,請參閱第 5.8 節,〈API 命令列整合〉

  • --auth-method=method

    要用於帳戶的驗證方法。取決於用於帳戶密碼的驗證外掛程式。對於使用傳統 MySQL 通訊協定的 MySQL Shell 連線,請指定驗證外掛程式的名稱,例如 caching_sha2_password。對於使用 X Protocol 的 MySQL Shell 連線,請指定下列其中一個選項

    AUTO

    讓程式庫選取驗證方法。

    FALLBACK

    讓程式庫選取驗證方法,但不要使用與 MySQL 5.7 不相容的任何驗證方法。

    FROM_CAPABILITIES

    讓程式庫選取驗證方法,並使用伺服器執行個體宣告的功能。

    MYSQL41

    使用 MySQL 4.1 和更新版本支援的挑戰回應驗證通訊協定,不會傳送純文字密碼。此選項與使用 mysql_native_password 驗證外掛程式的帳戶相容。

    PLAIN

    傳送純文字密碼以進行驗證。僅在加密連線中使用此選項。如果存在 SSL 連線,則可以使用此選項來使用快取認證,以使用 caching_sha2_password 驗證外掛程式的帳戶進行驗證。請參閱搭配快取 SHA-2 驗證外掛程式使用 X 外掛程式

    SHA256_MEMORY

    使用記憶體中儲存的雜湊密碼進行驗證。此選項可用於使用快取認證來驗證使用 caching_sha2_password 驗證外掛程式的帳戶,其中有非 SSL 連線。請參閱搭配快取 SHA-2 驗證外掛程式使用 X 外掛程式

    對於使用傳統 MySQL 通訊協定的 MySQL Shell 連線,請指定使用者帳戶使用的驗證外掛程式名稱,例如 caching_sha2_password (這是 MySQL 8.0 中建立的使用者帳戶的預設值)。MySQL Shell 使用 MySQL 用戶端程式庫進行這些連線的用戶端驗證。下列驗證方法需要額外的組態

    clear_text_password

    簡單 LDAP 驗證需要 mysql_clear_password 用戶端外掛程式。它內建於 MySQL 用戶端程式庫中,但為了安全起見,預設情況下不會啟用。當您使用 --auth-method=clear_text_password 連線選項指定時,MySQL Shell 會啟用並使用此外掛程式。此驗證類型僅適用於使用 SSL 或 socket 的安全連線,因此您必須先設定安全連線才能使用它。請注意,使用 ssl-mode=preferred 選項時,無法保證 SSL 連線,因此設定此選項的連線不被視為 SSL 連線。如需更多資訊,請參閱第 4.3.4 節「使用加密連線」

    authentication_ldap_sasl_client

    authentication_ldap_sasl_client 用戶端外掛程式適用於基於 SASL 的 LDAP 驗證,包括 GSSAPI/Kerberos 驗證。它並未內建於 MySQL 用戶端程式庫中,而是隨 MySQL 伺服器套件一起提供。若要載入它,您必須使用 --mysql-plugin-dir 選項來指定 MySQL 伺服器套件中外掛程式的路徑。

    authentication_kerberos_client

    authentication_kerberos_client 用戶端外掛程式適用於 Kerberos 驗證。它並未內建於 MySQL 用戶端程式庫中,而是隨 MySQL 伺服器套件一起提供。若要載入它,您必須使用 --mysql-plugin-dir 選項來指定 MySQL 伺服器套件中外掛程式的路徑。

    從 MySQL 8.0.27 開始,當使用 --auth-method 選項來指定 authentication_ldap_sasl_clientauthentication_kerberos_client 外掛程式,且使用 --mysql-plugin-dir 選項來提供外掛程式的路徑時,支援 Kerberos 驗證的快取授權票證 (TGT)。若要使用快取的 TGT,請勿在連線選項中指定使用者和密碼。當您指定其中一個外掛程式且未指定使用者和密碼時,MySQL Shell 不會提供系統使用者名稱、不會提示輸入密碼,也不會嘗試使用密碼儲存輔助程式來擷取或儲存憑證。

    如需更多資訊,請參閱第 4.3.5 節「使用 LDAP 和 Kerberos 驗證」

  • --cluster

    確保目標伺服器是 InnoDB Cluster 的一部分,如果是,則將 cluster 全域變數設定為叢集物件。

  • --column-type-info

    在 SQL 模式中,在列印查詢傳回的結果集之前,列印結果集中每個資料行的中繼資料,例如資料行類型和定序。

    資料行類型會以 MySQL Shell 使用的類型 (Type) 和原始資料庫使用的類型 (DBType) 傳回。對於使用傳統 MySQL 通訊協定的 MySQL Shell 連線,DBType 是由通訊協定傳回的內容;對於 X 通訊協定連線,DBType 是從可用資訊推斷而來。資料行長度 (Length) 以位元組為單位傳回。

  • --compress[={required|preferred|disabled}]-C [{required|preferred|disabled}]

    控制使用此連線在用戶端和伺服器之間傳送的資訊壓縮。它也適用於傳統 MySQL 通訊協定和 X 通訊協定連線,您可以選擇性地指定 requiredpreferreddisabled。當只指定 --compress 時,值預設為 --compress=required。如需在所有版本中使用 MySQL Shell 的壓縮控制的資訊,請參閱第 4.3.7 節「使用壓縮連線」

  • --connect-timeout=ms

    設定 MySQL Shell 等待多長時間 (以毫秒為單位) 來建立透過命令列引數指定的全域會期。

  • --credential-store-helper=helper

    要用於儲存和擷取密碼的密碼儲存輔助程式。請參閱第 4.4 節「可插拔密碼儲存」

  • --database=name-D name

    要使用的預設綱要。這是 --schema 的別名。

  • --dba=enableXProtocol

    在 MySQL Shell 8.4.0 中已棄用。

    在與 MySQL 5.7 伺服器的連線上啟用 X Plugin,以便您可以使用 X 通訊協定連線進行後續連線。需要使用傳統 MySQL 通訊協定的連線。與預設啟用 X Plugin 的 MySQL 8.0 伺服器無關。

  • --dba-log-sql[=0|1|2]

    記錄 AdminAPI 作業 (不包括沙箱作業) 執行的 SQL 陳述式。預設情況下,即使設定了 --log-level--verbose 選項,此類別的陳述式也不會寫入 MySQL Shell 應用程式記錄檔或作為詳細輸出傳送到主控台。選項的值是介於 0 到 2 的整數。0 不會記錄或顯示此類別的陳述式,如果您未指定選項,這是預設行為。1 會記錄 AdminAPI 作業執行的 SQL 陳述式,但 SELECT 陳述式和 SHOW 陳述式除外 (如果您在命令列上指定選項而沒有值,這是預設設定)。2 會完整記錄正規 AdminAPI 作業執行的 SQL 陳述式,包括 SELECTSHOW 陳述式。如需更多資訊,請參閱第 12 章「MySQL Shell 記錄和偵錯

  • --log-sql[=off|error|on|all|unfiltered]

    將 MySQL Shell 執行的所有 SQL 陳述式記錄到 MySQL Shell 記錄檔 mysqlsh.log

    提供以下選項

    off

    不記錄 MySQL Shell SQL 陳述式。

    error

    (預設值) 只會記錄 MySQL Shell 失敗的 SQL 陳述式。

    on

    會記錄所有 MySQL Shell SQL 陳述式,但符合 logSql.ignorePatternlogSql.ignorePatternUnsafe 中定義的忽略模式的陳述式除外。如需更多資訊,請參閱篩選 SQL 記錄

    all

    會記錄所有 MySQL Shell SQL 陳述式,但符合 logSql.ignorePatternUnsafe 中定義的忽略模式的陳述式除外。如需更多資訊,請參閱篩選 SQL 記錄

    unfiltered

    會記錄所有 MySQL Shell SQL 陳述式,不執行篩選。

  • --execute=command-e command

    使用目前使用中的語言執行命令並結束。此選項與 --file=file_name 選項互斥。

  • --file=file_name-f file_name

    指定要在批次模式中處理的檔案。在此之後指定的任何選項都用作已處理檔案的引數。

  • --force

    即使發生錯誤,仍繼續在 SQL 和批次模式中處理。

  • --histignore=strings

    指定未新增至 MySQL Shell 歷程記錄的字串。字串以冒號分隔。比對不區分大小寫,並且可以使用萬用字元 * 和 ?。預設忽略的字串指定為 *IDENTIFIED*:*PASSWORD*。請參閱第 5.5 節「程式碼歷程記錄」

  • --host=host_name-h host_name

    連線到指定主機上的 MySQL 伺服器。在 Windows 上,如果您指定 --host=.-h .(將主機名稱指定為句點),MySQL Shell 會使用預設的具名管道(其名稱為 MySQL)連線,或者使用您使用 --socket 選項指定的替代具名管道連線。

  • --get-server-public-key

    MySQL Shell 等同於 --get-server-public-key

    如果指定了 --server-public-key-path=file_name 並且指定了有效的公開金鑰檔案,則它會優先於 --get-server-public-key

    重要

    僅支援使用傳統 MySQL 通訊協定的連線。

    請參閱快取 SHA-2 可插拔驗證

  • --interactive[=full], -i

    在批次模式中模擬互動模式。

  • --js, --javascript

    以 JavaScript 模式啟動。

  • --json[={off|pretty|raw}]

    控制此工作階段中 MySQL Shell 輸出的 JSON 包裝。此選項旨在將 MySQL Shell 與其他程式介接,例如作為測試的一部分。如需變更查詢結果輸出以使用 JSON 格式,請參閱 --result-format

    --json 選項沒有值或值為 pretty 時,輸出會產生為美化的 JSON。若值為 raw,則輸出會以原始 JSON 格式產生。在上述任何一種情況下,都會忽略 --result-format 選項及其別名以及 resultFormat MySQL Shell 設定選項的值。若值為 off,則不會進行 JSON 包裝,並且結果集會以 --result-format 選項或 resultFormat 設定選項指定的格式正常輸出。

  • --log-file=path

    變更此 MySQL Shell 執行個體的 MySQL Shell 應用程式記錄檔 mysqlsh.log 的位置。應用程式記錄檔的預設位置是使用者設定路徑,在 Windows 上預設為 %APPDATA%\MySQL\mysqlsh\,在 Unix 上預設為 ~/.mysqlsh/。您可以透過定義環境變數 MYSQLSH_USER_CONFIG_HOME 來覆寫所有 MySQL Shell 執行個體的使用者設定路徑。--log-file 選項適用於個別的 MySQL Shell 執行個體,這表示不同的執行個體可以寫入不同的位置。

  • --log-level=N

    變更 MySQL Shell 應用程式記錄檔 mysqlsh.log 的記錄層級,或停用記錄至檔案。此選項需要一個值,該值可以是 1 到 8 範圍內的整數,或 noneinternalerrorwarninginfodebugdebug2debug3 其中之一。指定 1 或 none 會停用記錄至應用程式記錄檔。如果您未指定此選項,則預設值為層級 5 (info)。請參閱第 12 章,MySQL Shell 記錄和偵錯

  • -ma

    在 MySQL Shell 8.0.13 版中已淘汰。自動嘗試使用 X 通訊協定建立工作階段的連線,如果 X 通訊協定不可用,則會回復為傳統 MySQL 通訊協定。

  • --mysql, --mc

    設定在啟動時建立的全域工作階段,以使用傳統 MySQL 通訊協定連線。

  • --mysql-plugin-dir=path

    透過覆寫 shell.options.mysqlPluginDir 設定的值,設定用戶端驗證外掛程式的非永久路徑。用戶端外掛程式隨附於 MySQL Server 套件中,並且可以相對於 MySQL 基底目錄(basedir 系統變數的值)找到。例如

    • C:\program files\mysql\mysql Server 8.0\lib\plugin 在 Windows 主機類型上

    • /usr/local/mysql/lib/plugin 在 Linux 主機類型上

    如需隨附於伺服器的用戶端驗證外掛程式的清單,請參閱可用的驗證外掛程式

  • --mysqlx, --mx

    設定在啟動時建立的全域工作階段,以使用 X 通訊協定連線。

  • --name-cache

    根據使用中的預設結構描述,啟用表格名稱的自動載入。

  • --no-name-cache, -A

    停用根據使用中的預設結構描述和 DevAPI db 物件載入表格名稱以進行自動完成。請使用 \rehash 手動重新載入名稱資訊。

  • --no-password

    當連線至伺服器時,如果使用者具有無密碼的帳戶(不安全且不建議使用),或正在使用 Socket 對等認證(適用於 Unix Socket 連線),您必須使用 --no-password 明確指定未提供密碼且不需要密碼提示。

  • --no-wizard, -nw

    停用由建立連線、dba.configureInstance()Cluster.rebootClusterFromCompleteOutage() 等作業提供的互動式精靈。當您想要撰寫 MySQL Shell 的指令碼,且不想顯示互動式提示時,請使用此選項。如需詳細資訊,請參閱第 5.6 節「批次程式碼執行」第 5.8 節「API 命令列整合」

  • --oci-config-file=pathToConfigFile

    設定 OCI 組態檔的路徑,以便使用 OCI 驗證連線至 HeatWave Service 資料庫系統。

    此處定義的值會覆寫 oci.configFile 選項中定義的值。

    如需詳細資訊,請參閱使用 authentication_oci 外掛程式驗證

  • --authentication-oci-client-config-profile=profileName

    設定 OCI 組態檔中的設定檔,以便使用 OCI 驗證連線至 HeatWave Service 資料庫系統。

    此處定義的值會覆寫 oci.profile 選項中定義的值。

    如需詳細資訊,請參閱使用 authentication_oci 外掛程式驗證

  • --pager=name

    MySQL Shell 用於顯示 SQL 模式下執行的陳述式和其他選定命令(例如線上說明)的文字輸出的外部分頁工具。如果您未設定分頁器,則會使用 PAGER 環境變數指定的分頁器。請參閱第 4.6 節「使用分頁器」

  • --passwords-from-stdin

    從標準輸入而非從終端機讀取密碼。此選項不會影響任何其他密碼行為,例如密碼提示。

  • --password[=password], -ppassword

    連線至伺服器時要使用的密碼。連線至 MySQL Shell 時接受的最大密碼長度為 128 個字元。

    • --password=password (-ppassword) 與值會提供要用於連線的密碼。使用長格式 --password= 時,您必須在選項及其值之間使用等號,而不是空格。使用簡短格式 -p 時,選項及其值之間不得有空格。如果任一情況下使用了空格,則該值不會被解譯為密碼,而可能會被解譯為另一個連線參數。

      在命令列上指定密碼應視為不安全。請參閱密碼安全性的終端使用者準則。您可以使用選項檔案來避免在命令列上提供密碼。

    • --password 沒有值且沒有等號,或 -p 沒有值,會要求顯示密碼提示。

    • --password= 具有空值,其效果與 --no-password 相同,後者會指定使用者連線時沒有密碼。當連線至伺服器時,如果使用者具有無密碼的帳戶(不安全且不建議使用),或正在使用 Socket 對等認證(適用於 Unix Socket 連線),您必須使用這些方法之一明確指定未提供密碼且不需要密碼提示。

  • --password1[=password]

    --password1--password2--password3 是用於需要多因素身份驗證的帳戶的密碼。您最多可以提供三個密碼。這些選項的工作方式與 --password 選項相同,而 --password1 被視為與該選項等效。您可以在命令列上的選項後指定密碼值(這是不安全的),或者如果選項沒有給出密碼值,MySQL Shell 會依次提示使用者輸入每個密碼。僅支援使用命令列引數建立的傳統 MySQL 協議連線。

  • --password2[=password]

    用於需要多因素身份驗證的帳戶的第二個身份驗證方法的密碼。請參閱 --password1 選項的描述。

  • --password3[=password]

    用於需要多因素身份驗證的帳戶的第三個身份驗證方法的密碼。請參閱 --password1 選項的描述。

  • --plugin-authentication-webauthn-client-preserve-privacy={OFF|ON}

    命令列格式 --plugin-authentication-webauthn-client-preserve-privacy
    類型 布林值
    預設值 false

    決定當給定的 RP ID(分配給依賴方伺服器的唯一名稱,即 MySQL 伺服器)儲存了多個可探索的憑證時,如何將斷言傳送到伺服器。如果 FIDO2 裝置包含給定 RP ID 的多個常駐金鑰,則此選項允許使用者選擇要用於斷言的金鑰。它提供兩個用戶端使用者可以設定的可能值。預設值為 false。如果設定為 false,則會由給定 RP ID 的所有可用憑證對挑戰進行簽署,並且所有簽名都會傳送到伺服器。如果設定為 true,則會提示使用者選擇要用於簽名的憑證。

    注意

    如果裝置不支援常駐金鑰功能,則此選項無效。

    有關詳細資訊,請參閱 WebAuthn 可插拔身份驗證

  • --port=port_num, -P port_num

    用於連線的 TCP/IP 埠號。預設埠號為 33060。

  • --py, --python

    以 Python 模式啟動。

  • --pyc=pythonCommand, -c

    執行 Python 命令並結束。在此之後指定的任何選項都會被視為已處理命令的引數。

  • --pym

    在 MySQL Shell 的 Python 模式中將指定的 Python 模組作為指令碼執行。--pym 的工作方式與 Python 的 -m 命令列選項相同。

  • --quiet-start[=1|2]

    啟動時不列印任何介紹性資訊。MySQL Shell 通常會列印有關產品、會話(例如預設綱要和連線 ID)、警告訊息以及啟動和連線期間傳回的任何錯誤的資訊。當您指定沒有值或值為 1 的 --quiet-start 時,不會列印有關 MySQL Shell 產品的資訊,但會列印會話資訊、警告和錯誤。如果值為 2,則只會列印錯誤。

  • --redirect-primary

    確保目標伺服器是 InnoDB Cluster 或 InnoDB ReplicaSet 的一部分,如果不是主要伺服器,則會尋找主要伺服器並連線到它。當使用此選項時,如果以下任何一項為真,MySQL Shell 將會因錯誤而結束

    • 未指定任何執行個體

    • 在 InnoDB Cluster 上,群組複寫未啟動

    • InnoDB Cluster 中繼資料不存在

    • 沒有仲裁

  • --register-factor=value

    命令列格式 --register-factor=值
    類型 字串

    在使用 WebAuthn 基於裝置的身份驗證之前,必須執行 FIDO/FIDO2 裝置註冊的因素。此選項值必須是單一值,或以逗號分隔的兩個值。每個值必須為 2 或 3,因此允許的選項值為 '2''3''2,3''3,2'

    例如,需要註冊第三個身份驗證因素的帳戶會調用 mysql 用戶端如下

    mysqlsh --user=user_name --register-factor=3

    需要註冊第二和第三個身份驗證因素的帳戶會調用 mysql 用戶端如下

    mysqlsh --user=user_name --register-factor=2,3

    如果註冊成功,則會建立連線。如果存在具有待處理註冊的身份驗證因素,則在嘗試連線到伺服器時,連線會被置於待處理註冊模式。在這種情況下,請斷開連線並使用正確的 --register-factor 值重新連線以完成註冊。

    註冊是一個包含啟動註冊完成註冊步驟的兩步驟過程。啟動註冊步驟會執行此語句

    ALTER USER user factor INITIATE REGISTRATION

    該語句會傳回一個結果集,其中包含 32 位元組的挑戰、使用者名稱和依賴方 ID(請參閱 authentication_webauthn_rp_id)。

    完成註冊步驟會執行此語句

    ALTER USER user factor FINISH REGISTRATION SET CHALLENGE_RESPONSE AS 'auth_string'

    該語句會完成註冊,並將以下資訊作為 auth_string 的一部分傳送到伺服器:驗證器資料、X.509 格式的可選證明憑證和簽名。

    啟動和註冊步驟必須在單一連線中執行,因為用戶端在啟動步驟期間收到的挑戰會儲存到用戶端連線處理常式中。如果註冊步驟是由不同的連線執行,則註冊將會失敗。--register-factor 選項會執行啟動和註冊步驟,這避免了上述失敗情況,並防止必須手動執行 ALTER USER 啟動和註冊語句。

    --register-factor 選項僅適用於 mysql 用戶端。其他 MySQL 用戶端程式不支援此選項。

    有關相關資訊,請參閱 使用 WebAuthn 身份驗證

  • --replicaset

    確保目標伺服器屬於 InnoDB ReplicaSet,如果是,則使用 InnoDB ReplicaSet 填入 rs 全域變數。然後,您可以使用 rs 全域變數管理 InnoDB ReplicaSet,例如,透過發出 rs.status()

  • --redirect-secondary

    確保目標伺服器是單一主要 InnoDB Cluster 或 InnoDB ReplicaSet 的一部分,如果不是次要伺服器,則會尋找次要伺服器並連線到它。當使用此選項時,如果以下任何一項為真,MySQL Shell 將會因錯誤而結束

    • 在 InnoDB Cluster 上,群組複寫未啟動

    • InnoDB Cluster 中繼資料不存在

    • 沒有仲裁

    • 叢集不是單一主要的,並且在多主要模式下執行

    • 沒有可用的次要伺服器,例如,因為只有一個伺服器執行個體

  • --result-format={table|tabbed|vertical|json|json/pretty|ndjson|json/raw|json/array}

    設定此會話的 resultFormat MySQL Shell 組態選項的值。格式如下

    table

    互動模式的預設值,除非已在組態檔案中為 resultFormat 組態選項持續設定了另一個值,在這種情況下,將會應用該預設值。也可以使用 --table 別名。

    tabbed

    批次模式的預設值,除非已在組態檔案中為 resultFormat 組態選項持續設定了另一個值,在這種情況下,將會應用該預設值。也可以使用 --tabbed 別名。

    vertical

    產生的輸出等同於 SQL 查詢的 \G 終止符。也可以使用 --vertical-E 別名。

    json 或 json/pretty

    產生漂亮列印的 JSON。

    ndjson 或 json/raw

    產生以換行符分隔的原始 JSON。

    json/array

    產生包裝在 JSON 陣列中的原始 JSON。

    如果使用 --json 命令列選項來啟動會話輸出的 JSON 包裝,則會忽略 --result-format 選項及其別名以及 resultFormat 組態選項的值。

  • --save-passwords={always|prompt|never}

    控制是否將密碼自動儲存在密碼儲存區。always 表示密碼總是會被儲存,除非它們已存在於儲存區中,或伺服器 URL 被篩選器排除。never 表示密碼永遠不會被儲存。prompt 是預設值,表示會詢問使用者是否要儲存密碼。請參閱第 4.4 節,「可插拔密碼儲存區」

  • --schema=名稱-D 名稱

    要使用的預設綱要。

  • --server-public-key-path=檔案名稱

    MySQL Shell 對應於 --server-public-key-path 的選項。

    如果指定了 --server-public-key-path=file_name 並且指定了有效的公開金鑰檔案,則它會優先於 --get-server-public-key

    重要

    僅支援使用傳統 MySQL 通訊協定的連線。

    請參閱 caching_sha2_password 外掛程式的快取 SHA-2 可插拔身分驗證

  • --show-warnings={true|false}

    如果指定為 true (預設值),在 SQL 模式中,如果每個 SQL 語句後有任何警告,MySQL Shell 會顯示警告。如果指定為 false,則不會顯示警告。

  • --socket[=路徑]-S [路徑]

    在 Unix 上,當指定路徑時,該路徑是用於連線的 Unix socket 檔案名稱。如果您指定 --socket 時沒有值且沒有等號,或 -S 時沒有值,則會使用適用協定的預設 Unix socket 檔案。

    在 Windows 上,該路徑是用於連線的具名管道名稱。管道名稱不區分大小寫。在 Windows 上,您必須指定路徑,且 --socket 選項僅適用於傳統 MySQL 協定工作階段。

    如果您在 Unix 上指定埠或主機名稱 (而非 localhost),或在 Windows 上指定句點 (.),則無法指定 socket。

  • --sql

    以 SQL 模式啟動,如果未在連線資訊中指定要使用的協定,則會自動偵測要使用的協定。當未指定要使用的協定時,預設為 X 協定連線,然後回退到傳統 MySQL 協定連線。若要強制連線使用特定協定,請參閱 --sqlx--sqlc 選項。或者,指定要作為 URI 類連線字串一部分使用的協定,或使用 --port 選項。如需更多資訊,請參閱第 4.3 節,「MySQL Shell 連線」MySQL Shell 連接埠

  • --sqlc

    以 SQL 模式啟動,強制連線使用傳統 MySQL 協定,例如將 MySQL Shell 與不支援 X 協定的伺服器搭配使用。如果您未在連線中指定連接埠,當您提供此選項時,MySQL Shell 會使用預設的傳統 MySQL 協定連接埠,通常為 3306。您要連線的連接埠必須支援傳統 MySQL 協定,因此舉例來說,如果您指定的連線使用 X 協定的預設連接埠 33060,則連線會因錯誤而失敗。如需更多資訊,請參閱第 4.3 節,「MySQL Shell 連線」MySQL Shell 連接埠

  • --sqlx

    以 SQL 模式啟動,強制連線使用 X 協定。如果您未在連線中指定連接埠,當您提供此選項時,MySQL Shell 會使用預設的 X 協定連接埠,通常為 33060。您要連線的連接埠必須支援 X 協定,因此舉例來說,如果您指定的連線使用傳統 MySQL 協定的預設連接埠 3306,則連線會因錯誤而失敗。如需更多資訊,請參閱第 4.3 節,「MySQL Shell 連線」MySQL Shell 連接埠

  • --ssh=字串

    建立 SSH 通道,提供與 MySQL 伺服器執行個體的加密連線。以 [使用者@]主機[:連接埠] 的格式提供連線至 SSH 伺服器的 URI,例如

    --ssh root@198.51.100.4:2222

    當您使用此選項時,您也必須指定 --user--host--port 選項,或連線至 MySQL 伺服器執行個體的 URI。如需 MySQL Shell 中 SSH 通道連線的相關資訊,請參閱第 4.3.6 節,「使用 SSH 通道」

  • --ssh-config-file=路徑

    指定連線至 SSH 伺服器的 SSH 設定檔路徑。如果未指定此選項,您可以使用 MySQL Shell 設定選項 ssh.configFile 設定自訂檔案作為預設值。如果未設定 ssh.configFile,則預設值為標準 SSH 設定檔 ~/.ssh/config。如果您指定 --ssh-config-file 時沒有值,則會忽略 ssh.configFile 指定的預設檔案,並改為使用 ~/.ssh/config 檔案。

  • --ssh-identity-file=路徑

    指定連線至 SSH 伺服器的身分識別檔案路徑。如果未指定此選項,則預設值為 SSH 設定資料夾中的標準私密金鑰檔案 (~/.ssh/id_rsa)。

  • --ssl*

    開頭為 --ssl 的選項指定是否使用 SSL 連線至伺服器,並指出在哪裡尋找 SSL 金鑰和憑證。mysqlsh SSL 選項的功能與 MySQL 伺服器的 SSL 選項相同,請參閱加密連線的指令選項以取得更多資訊。

    mysqlsh 接受這些 SSL 選項:--ssl-mode--ssl-ca--ssl-capath--ssl-cert--ssl-cipher--ssl-crl--ssl-crlpath--ssl-key--tls-version

  • --syslog

    將您在 MySQL Shell 的 SQL 模式中發出的 SQL 語句傳送到作業系統的系統記錄功能 (Unix 上的 syslog,或 Windows 事件記錄檔)。只有在 MySQL Shell 以互動模式啟動時,才會記錄 SQL 語句的系統日誌,因此無論是正常啟動,還是使用 --interactive 選項啟動。如果使用 --execute--file 選項在啟動時以批次模式執行 mysqlsh,則不會記錄系統日誌。如需更多資訊,請參閱第 12.3 節,「使用者 SQL 語句的系統記錄」

  • --tabbed

    以互動模式顯示 Tab 字元分隔格式的結果。該模式的預設值為表格格式。此選項是 --result-format=tabbed 選項的別名。

  • --table

    以表格格式在批次模式下顯示結果。該模式的預設格式為以 Tab 分隔的格式。此選項是 --result-format=table 選項的別名。

  • --uri=str

    在啟動時建立連線,並在類似 URI 的字串中指定連線選項,如 使用類似 URI 的字串或鍵值對連線至伺服器 中所述。

  • --user=user_name, -u user_name

    連線至伺服器時要使用的 MySQL 使用者名稱。

  • --verbose[=0|1|2|3|4]

    啟用詳細輸出至主控台並指定詳細程度。值為 0 到 4 範圍內的整數。0 不顯示訊息,這是您未指定選項時的預設詳細程度設定。1 顯示錯誤、警告和資訊訊息(如果您在命令列上指定選項時未指定值,則此為預設設定)。2、3 和 4 會新增更高層級的偵錯訊息。如需更多資訊,請參閱第 12 章,MySQL Shell 記錄和偵錯

  • --version, -V

    顯示 MySQL Shell 的版本並結束。

  • --vertical, -E

    垂直顯示結果,如同 SQL 查詢使用 \G 終止符號時一樣。此選項是 --result-format=vertical 選項的別名。