MySQL Shell 8.4  /  自訂 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 資訊 介於 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 組態介面

在 JavaScript 和 Python 模式中,可以使用 shell.options 物件來變更 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 會結束並顯示錯誤。