MySQL Shell 9.0  /  自訂 MySQL Shell  /  設定 MySQL Shell 選項

13.4 設定 MySQL Shell 選項

您可以設定 MySQL Shell 來符合您的偏好,例如以特定程式語言啟動,或以特定格式提供輸出。設定選項可以僅針對目前的工作階段設定,也可以透過將變更持續保存至 MySQL Shell 設定檔來永久設定選項。提供所有選項的線上說明。您可以使用 MySQL Shell \option 指令來設定選項,此指令在所有 MySQL Shell 模式中都可用於查詢和變更設定選項。或者,在 JavaScript 和 Python 模式中,使用 shell.options 物件。

有效的設定選項

以下設定選項可以使用 \option 指令或 shell.options 指令碼介面來設定

選項名稱 預設值 類型 效果
autocomplete.nameCache true 布林值 啟用資料庫名稱快取以進行自動完成。
batchContinueOnError false 布林值 (唯讀) 在 SQL 批次模式中,如果發現錯誤,強制繼續處理。透過在命令列上加入 --force 設定為 true。請參閱附錄 A,MySQL Shell 命令參考
connectTimeout 10 大於 0 的浮點數 在任何未使用 AdminAPI 的工作階段連線逾時之前等待的時間 (以秒為單位)。
credentialStore.excludeFilters 陣列 停用自動密碼儲存的 URL 陣列,支援 glob 字元 *?
credentialStore.helper 取決於平台 字串 用於擷取或儲存密碼的憑證輔助程式名稱。支援使用特殊值 default 來使用平台的預設輔助程式。特殊值 >disabled< 會停用憑證儲存。
credentialStore.savePasswords 提示 字串 控制自動密碼儲存,支援的值:alwayspromptnever
dba.connectTimeout 5 大於 0 的浮點數 在任何使用 AdminAPI 的工作階段連線逾時之前等待的時間 (以秒為單位)。

dba.connectivityChecks

true

布林值

使用定義的 SSL 設定,定義是否為 cluster.addInstance()clusterSet.createReplicaCluster()replicaSet.addInstance() 執行連線檢查。

如果發生 SSL 錯誤,則指令會停止並傳回錯誤。

dba.gtidWaitTimeout 60 大於 0 的整數 在 AdminAPI 作業需要時,等待套用 GTID 交易的時間 (以秒為單位) (請參閱第 7.9 節,「修改或解散 InnoDB Cluster」)。
logFile MySQL Shell 日誌檔案的路徑。 字串 顯示 MySQL Shell 日誌檔案的路徑。(唯讀) 這個值只能從命令列使用 --log-file=path/to/logfile.log 選項來變更。請參閱附錄 A,MySQL Shell 命令參考
dba.logSql 0 介於 0 到 2 的整數 (在 MySQL Shell 8.0.30 中已淘汰。請改用 logSql。) 記錄由 AdminAPI 作業執行的 SQL 陳述式 (請參閱第 12 章,MySQL Shell 日誌記錄與除錯)。
dba.restartWaitTimeout 60 大於 0 的整數 在復原作業期間等待套用交易的時間 (以秒為單位)。當加入的執行個體必須復原大量資料時,請使用此選項來設定較長的逾時。請參閱第 7.4.6 節,「將 MySQL Clone 與 InnoDB Cluster 搭配使用」)。
defaultCompress false 布林值 要求壓縮在每個全域工作階段中於用戶端和伺服器之間傳送的資訊。僅影響傳統 MySQL 通訊協定連線 (請參閱第 4.3.7 節,「使用壓縮連線」)。
defaultMode 字串 (sql、js 或 py) 啟動 MySQL Shell 時要使用的模式 (SQL、JavaScript 或 Python)。
devapi.dbObjectHandles true 布林值 啟用 X DevAPI db 物件的表格和集合名稱控制代碼。
history.autoSave false 布林值 當您結束應用程式時,儲存 (true) 或清除 (false) MySQL Shell 程式碼歷史記錄中的項目 (請參閱第 5.5 節,「程式碼歷史記錄」)。
history.maxSize 1000 整數 要儲存在 MySQL Shell 程式碼歷史記錄中的最大項目數。
history.sql.ignorePattern *SELECT*:SHOW* 字串 符合這些模式的字串不會新增至 MySQL Shell 程式碼歷史記錄。
history.sql.syslog false 布林值 將互動式 SQL 陳述式傳送至作業系統的系統記錄設備 (請參閱第 12.3 節,「使用者 SQL 陳述式的系統記錄」)。
logLevel info 介於 1 到 8 的整數,或任何的 none、internal、error、warning、info、debug、debug2、debug3 為應用程式記錄設定記錄層級 (請參閱第 12 章,MySQL Shell 日誌記錄與除錯)。
logSql 錯誤 字串 (off、error、on、all) 記錄由 MySQL Shell 作業執行的 SQL 陳述式 (請參閱第 12.4 節,「MySQL Shell SQL 記錄」)。此記錄選項不會記錄從 SQL 模式以互動方式執行的使用者 SQL 陳述式,僅會記錄由 MySQL Shell 作業執行的 SQL 陳述式。記錄除了 logSql.ignorePatternUnsafelogSql.ignorePattern 選項中定義的項目以外的所有 SQL 陳述式。
  • off:不記錄任何 SQL 陳述式。

  • error:僅當發生錯誤時,記錄包含錯誤訊息的 SQL 陳述式。

  • on:記錄除了 logSql.ignorePatternUnsafelogSql.ignorePattern 選項中定義的項目以外的所有 SQL 陳述式。

  • all:記錄除了 logSql.ignorePatternUnsafe 中定義的項目以外的所有 SQL 陳述式。

logSql.ignorePattern *SELECT*:*SHOW* 字串 指定以冒號分隔的 glob 模式清單,以篩選出由 logSql 記錄的 SQL 陳述式 (請參閱第 12.4 節,「MySQL Shell SQL 記錄」)。
logSql.ignorePatternUnsafe *IDENTIFIED*:*PASSWORD* 字串 指定以冒號分隔的陳述式模式清單,以篩選出由 logSql 記錄的 SQL 陳述式 (請參閱第 12.4 節,「MySQL Shell SQL 記錄」)。
mysqlPluginDir MySQL Shell 的 MySQL 外掛程式目錄。也就是說,Linux 平台上的 MySQL Shell 安裝的 lib/mysql/plugins 目錄,以及 Windows 平台上的 lib\mysql\plugins 目錄。 字串 設定外掛程式目錄的永久路徑。
oci.configFile 您平台上的預設位置。 字串 設定 OCI CLI 設定檔的永久路徑。
oci.profile DEFAULT 字串 指定要在 OCI CLI 設定檔中使用的設定檔。
pager 字串 使用指定的外部分頁工具來顯示文字和結果。可以加入該工具的命令列引數 (請參閱第 4.6 節,「使用分頁器」)。
passwordsFromStdin false 布林值 stdin 而非終端機讀取密碼。
resultFormat 表格 字串 (table、tabbed、vertical、json | json/pretty、ndjson | json/raw、json/array) 列印結果集的預設輸出格式 (請參閱第 5.7 節,「輸出格式」)。
sandboxDir 取決於平台 字串 沙箱目錄。在 Windows 上,預設值為 C:\Users\MyUser\MySQL\mysql-sandboxes,而在 Unix 系統上,預設值為 $HOME/mysql-sandboxes
showColumnTypeInfo false 布林值 在 SQL 模式中,顯示結果集的資料行中繼資料。
showWarnings true 布林值 在 SQL 模式中,如果有的話,自動顯示 SQL 警告。
ssh.bufferSize 10240 大於 0 的整數 透過 SSH 通道進行資料傳輸的緩衝區大小 (以位元組為單位) (請參閱第 4.3.6 節,「使用 SSH 通道」)。
ssh.configFile 字串 自訂 SSH 設定檔的路徑,該設定檔會取代標準 SSH 設定檔 ~/.ssh/config 作為 SSH 通道的預設值 (請參閱第 4.3.6 節,「使用 SSH 通道」)。
useWizards true 布林值 啟用精靈模式。
verbose 0 介於 0 到 4 的整數 啟用詳細輸出到主控台,並設定詳細程度(請參閱第 12 章,MySQL Shell 記錄與除錯)。
注意

字串值區分大小寫。

標示為唯讀的選項無法修改。

outputFormat 選項目前已棄用。請改用 resultFormat

使用 \option 命令

MySQL Shell 的 \option 命令讓您可以在所有模式中查詢和變更組態選項,除了 JavaScript 和 Python 模式之外,也可以在 SQL 模式中進行組態設定。

此命令的使用方式如下

  • \option -h, --help [filter] - 列印符合 filter 的選項的說明。

  • \option -l, --list [--show-origin] - 列出所有選項。--show-origin 會使用有關數值上次變更方式的資訊來擴充清單,可能的值為

    • 命令列

    • 已編譯的預設值

    • 組態檔

    • 環境變數

    • 使用者定義

  • \option option_name - 列印選項的目前值。

  • \option [--persist] option_name valuename=value - 設定選項的值,如果指定了 --persist,則將其儲存到組態檔。

  • \option --unset [--persist] <option_name> - 將選項的值重設為預設值,如果指定了 --persist,則從 MySQL Shell 組態檔中移除該選項。

注意

option_namefilter 的值區分大小寫。

如需 option_name 的可能值清單,請參閱有效的組態選項

使用 shell.options 組態介面

shell.options 物件可在 JavaScript 和 Python 模式中用於變更 MySQL Shell 選項值。您可以使用特定方法來設定選項,或使用鍵值對,如下所示

MySQL JS > shell.options['history.autoSave']=1

除了鍵值對介面之外,還可以使用下列方法

  • shell.options[optionName]:列出選項的目前值。

  • shell.options.set(optionName, value):將此工作階段的 optionName 設定為 value,變更不會儲存到組態檔。

  • shell.options.setPersist(optionName, value):將此工作階段的 optionName 設定為 value,並將變更儲存到組態檔。在 Python 模式中,方法為 shell.options.set_persist

  • shell.options.unset(optionName):將此工作階段的 optionName 重設為預設值,變更不會儲存到組態檔。

  • shell.options.unsetPersist(optionName):將此工作階段的 optionName 重設為預設值,並將變更儲存到組態檔。在 Python 模式中,方法為 shell.options.unset_persist

選項名稱會被視為字串,因此應該以 ' 字元括住。如需 optionName 的可能值清單,請參閱有效的組態選項

請依照下列方式使用命令來設定 MySQL Shell 選項

MySQL JS > shell.options.set('history.maxSize', 5000)
MySQL JS > shell.options.setPersist('useWizards', 'true')
MySQL JS > shell.options.setPersist('history.autoSave', 1)

請依照下列方式將選項還原為預設值

MySQL JS > shell.options.unset('history.maxSize')
MySQL JS > shell.options.unsetPersist('useWizards')

組態檔

MySQL Shell 組態檔會儲存選項的值,以確保這些值在工作階段之間持續存在。數值會在啟動時讀取,當您使用持續功能時,設定會儲存到組態檔。

組態檔的位置是使用者組態路徑,檔案名為 options.json。假設預設使用者組態路徑尚未透過定義環境變數 MYSQLSH_USER_CONFIG_HOME 覆寫,則組態檔的路徑為

  • 在 Windows 上 %APPDATA%\MySQL\mysqlsh

  • 在 Unix 上 ~/.mysqlsh,其中 ~ 代表使用者的主目錄。

組態檔會在您第一次自訂組態選項時建立。此檔案由 MySQL Shell 內部維護,不應手動編輯。如果在啟動時,組態檔中發現無法辨識的選項或具有不正確值的選項,MySQL Shell 會結束並顯示錯誤。