文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  MySQL 原始碼組態選項

2.8.7 MySQL 原始碼組態選項

CMake 程式可讓您對如何組態 MySQL 原始碼發行版進行大量控制。通常,您會使用 CMake 命令列上的選項來執行此操作。如需 CMake 支援的選項相關資訊,請在最上層原始碼目錄中執行下列其中一個命令

$> cmake . -LH

$> ccmake .

您也可以使用某些環境變數來影響 CMake。請參閱第 6.9 節,「環境變數」

對於布林選項,可以將值指定為 1ON 以啟用選項,或指定為 0OFF 以停用選項。

許多選項會組態可在伺服器啟動時覆寫的編譯時預設值。例如,組態預設安裝基本目錄位置、TCP/IP 連接埠號碼和 Unix Socket 檔案的 CMAKE_INSTALL_PREFIXMYSQL_TCP_PORTMYSQL_UNIX_ADDR 選項,可以使用 --basedir--port--socket 選項,在伺服器啟動時變更 mysqld。在適用的情況下,組態選項描述會指出對應的 mysqld 啟動選項。

以下章節提供關於 CMake 選項的更多資訊。

CMake 選項參考

下表顯示可用的 CMake 選項。在 預設 欄中,PREFIX 代表 CMAKE_INSTALL_PREFIX 選項的值,該選項會指定安裝基本目錄。此值會用作數個安裝子目錄的父位置。

表格 2.13 MySQL 原始碼組態選項參考 (CMake)

格式 描述 預設
ADD_GDB_INDEX 是否在二進位檔中啟用 .gdb_index 區段的產生
BUILD_CONFIG 使用與官方發行版相同的建置選項
BUNDLE_RUNTIME_LIBRARIES 將執行時間程式庫與 Windows 的伺服器 MSI 和 Zip 套件捆綁在一起 OFF
CMAKE_BUILD_TYPE 要產生的建置類型 RelWithDebInfo
CMAKE_CXX_FLAGS C++ 編譯器的旗標
CMAKE_C_FLAGS C 編譯器的旗標
CMAKE_INSTALL_PREFIX 安裝基本目錄 /usr/local/mysql
COMPILATION_COMMENT 關於編譯環境的註解
COMPILATION_COMMENT_SERVER 關於 mysqld 使用的編譯環境的註解
COMPRESS_DEBUG_SECTIONS 壓縮二進位執行檔的偵錯區段 OFF
CPACK_MONOLITHIC_INSTALL 套件建置是否產生單一檔案 OFF
DEFAULT_CHARSET 預設的伺服器字元集 utf8mb4
DEFAULT_COLLATION 預設的伺服器定序 utf8mb4_0900_ai_ci
DISABLE_PSI_COND 排除 Performance Schema 條件檢測 OFF
DISABLE_PSI_DATA_LOCK 排除效能架構資料鎖定檢測 OFF
DISABLE_PSI_ERROR 排除效能架構伺服器錯誤檢測 OFF
DISABLE_PSI_FILE 排除 Performance Schema 檔案檢測 OFF
DISABLE_PSI_IDLE 排除 Performance Schema 閒置檢測 OFF
DISABLE_PSI_MEMORY 排除 Performance Schema 記憶體檢測 OFF
DISABLE_PSI_METADATA 排除 Performance Schema 中繼資料檢測 OFF
DISABLE_PSI_MUTEX 排除 Performance Schema 互斥鎖檢測 OFF
DISABLE_PSI_PS 排除效能架構預備陳述式 OFF
DISABLE_PSI_RWLOCK 排除 Performance Schema 讀寫鎖檢測 OFF
DISABLE_PSI_SOCKET 排除 Performance Schema Socket 檢測 OFF
DISABLE_PSI_SP 排除 Performance Schema 儲存的程式檢測 OFF
DISABLE_PSI_STAGE 排除 Performance Schema 階段檢測 OFF
DISABLE_PSI_STATEMENT 排除 Performance Schema 陳述式檢測 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除效能架構 statements_digest 檢測 OFF
DISABLE_PSI_TABLE 排除 Performance Schema 資料表檢測 OFF
DISABLE_PSI_THREAD 排除效能架構執行緒檢測 OFF
DISABLE_PSI_TRANSACTION 排除效能架構交易檢測 OFF
ENABLED_LOCAL_INFILE 是否為 LOAD DATA 啟用 LOCAL OFF
ENABLED_PROFILING 是否啟用查詢效能分析程式碼 ON
ENABLE_EXPERIMENTAL_SYSVARS 是否啟用實驗性的 InnoDB 系統變數 OFF
ENABLE_GCOV 是否包含 gcov 支援
ENABLE_GPROF 啟用 gprof (僅限最佳化 Linux 建置) OFF
FORCE_COLORED_OUTPUT 是否為編譯器輸出著色 OFF
FORCE_INSOURCE_BUILD 是否強制使用原始碼內建置 OFF
FORCE_UNSUPPORTED_COMPILER 是否允許不支援的編譯器 OFF
FPROFILE_GENERATE 是否產生設定檔導向最佳化資料 OFF
FPROFILE_USE 是否使用設定檔導向最佳化資料 OFF
HAVE_PSI_MEMORY_INTERFACE 為動態儲存的過度對齊型別所使用的記憶體配置函數,啟用效能架構記憶體追蹤模組 OFF
IGNORE_AIO_CHECK 使用 -DBUILD_CONFIG=mysql_release 時,忽略 libaio 檢查 OFF
INSTALL_BINDIR 使用者可執行檔目錄 PREFIX/bin
INSTALL_DOCDIR 文件目錄 PREFIX/docs
INSTALL_DOCREADMEDIR README 檔案目錄 PREFIX
INSTALL_INCLUDEDIR 標頭檔目錄 PREFIX/include
INSTALL_INFODIR Info 檔案目錄 PREFIX/docs
INSTALL_LAYOUT 選取預先定義的安裝配置 STANDALONE
INSTALL_LIBDIR 程式庫檔案目錄 PREFIX/lib
INSTALL_MANDIR 說明頁面目錄 PREFIX/man
INSTALL_MYSQLSHAREDIR 共用資料目錄 PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test 目錄 PREFIX/mysql-test
INSTALL_PKGCONFIGDIR mysqlclient.pc pkg-config 檔案的目錄 INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR 外掛程式目錄 PREFIX/lib/plugin
INSTALL_PRIV_LIBDIR 安裝私有程式庫目錄
INSTALL_SBINDIR 伺服器可執行檔目錄 PREFIX/bin
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv 預設值 平台特定
INSTALL_SHAREDIR aclocal/mysql.m4 安裝目錄 PREFIX/share
INSTALL_STATIC_LIBRARIES 是否安裝靜態程式庫 ON
INSTALL_SUPPORTFILESDIR 額外支援檔案目錄 PREFIX/support-files
LINK_RANDOMIZE 是否隨機化 mysqld 二進位檔中的符號順序 OFF
LINK_RANDOMIZE_SEED LINK_RANDOMIZE 選項的種子值 mysql
MAX_INDEXES 每個資料表的最大索引數 64
MSVC_CPPCHECK 啟用 MSVC 程式碼分析。 ON
MUTEX_TYPE InnoDB 互斥鎖類型 event
MYSQLX_TCP_PORT X 外掛程式使用的 TCP/IP 通訊埠號碼 33060
MYSQLX_UNIX_ADDR X 外掛程式使用的 Unix socket 檔案 /tmp/mysqlx.sock
MYSQL_DATADIR 資料目錄
MYSQL_MAINTAINER_MODE 是否啟用 MySQL 維護者專屬的開發環境 OFF
MYSQL_PROJECT_NAME Windows/macOS 專案名稱 MySQL
MYSQL_TCP_PORT TCP/IP 通訊埠號碼 3306
MYSQL_UNIX_ADDR Unix socket 檔案 /tmp/mysql.sock
NDB_UTILS_LINK_DYNAMIC 使 NDB 工具動態連結至 ndbclient
ODBC_INCLUDES ODBC 包含目錄
ODBC_LIB_DIR ODBC 程式庫目錄
OPTIMIZER_TRACE 是否支援最佳化工具追蹤
OPTIMIZE_SANITIZER_BUILDS 是否最佳化消毒器建置 ON
REPRODUCIBLE_BUILD 格外小心以建立獨立於建置位置和時間的建置結果
SHOW_SUPPRESSED_COMPILER_WARNING 是否顯示被隱藏的編譯器警告,而不是因 -Werror 而失敗。 OFF
SYSCONFDIR 選項檔案目錄
SYSTEMD_PID_DIR systemd 下 PID 檔案的目錄 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd 下 MySQL 服務的名稱 mysqld
TMPDIR tmpdir 預設值
WIN_DEBUG_NO_INLINE 是否停用函數內嵌 OFF
WITHOUT_SERVER 不建置伺服器 OFF
WITHOUT_xxx_STORAGE_ENGINE 從建置中排除儲存引擎 xxx
WITH_ANT 用於建置 GCS Java 包裝函式的 Ant 路徑
WITH_ASAN 啟用 AddressSanitizer OFF
WITH_ASAN_SCOPE 啟用 AddressSanitizer -fsanitize-address-use-after-scope Clang 旗標 OFF
WITH_AUTHENTICATION_CLIENT_PLUGINS 如果建置任何對應的伺服器驗證外掛程式,則會自動啟用
WITH_AUTHENTICATION_LDAP 如果無法建置 LDAP 驗證外掛程式,是否回報錯誤 OFF
WITH_AUTHENTICATION_PAM 建置 PAM 驗證外掛程式 OFF
WITH_AWS_SDK Amazon Web Services 軟體開發套件的位置
WITH_BUILD_ID 在 Linux 系統上,產生唯一的建置 ID ON
WITH_CLASSPATH 在建置 MySQL Cluster Connector for Java 時要使用的類別路徑。預設值為空字串。
WITH_CLIENT_PROTOCOL_TRACING 建置用戶端通訊協定追蹤架構 ON
WITH_CURL curl 程式庫的位置
WITH_DEBUG 是否包含偵錯支援 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用預設編譯器選項 ON
WITH_DEVELOPER_ENTITLEMENTS 是否在 macOS 上將 'get-task-allow' 權限新增至所有可執行檔,以便在伺服器意外停止時產生核心傾印 OFF
WITH_EDITLINE 要使用哪個 libedit/editline 程式庫 bundled
WITH_ERROR_INSERT 在 NDB 儲存引擎中啟用錯誤插入。不應將其用於建置預定用於生產的二進位檔。 OFF
WITH_ICU ICU 支援的類型 bundled
WITH_INNODB_EXTRA_DEBUG 是否包含 InnoDB 的額外偵錯支援。 OFF
WITH_JEMALLOC 是否連結 -ljemalloc OFF
WITH_LD 是否使用 LLVM lld 或 mold 連接器
WITH_LIBEVENT 要使用哪個 libevent 程式庫 bundled
WITH_LIBWRAP 是否包含 libwrap (TCP 包裝函式) 支援 OFF
WITH_LOCK_ORDER 是否啟用 LOCK_ORDER 工具 OFF
WITH_LSAN 是否執行 LeakSanitizer,而不執行 AddressSanitizer OFF
WITH_LTO 啟用連結時間最佳化工具 OFF
WITH_LZ4 LZ4 程式庫支援的類型 bundled
WITH_MECAB 編譯 MeCab
WITH_MSAN 啟用 MemorySanitizer OFF
WITH_MSCRT_DEBUG 啟用 Visual Studio CRT 記憶體洩漏追蹤 OFF
WITH_MYSQLX 是否停用 X 通訊協定 ON
WITH_NDB 建置 MySQL NDB Cluster,包括 NDB 儲存引擎和所有 NDB 程式 OFF
WITH_NDBAPI_EXAMPLES 建置 API 範例程式。 OFF
WITH_NDBCLUSTER NDB 8.0.30 和更早版本:建置 NDB 儲存引擎。NDB 8.0.31 和更新版本:已過時;改用 WITH_NDB OFF
WITH_NDBCLUSTER_STORAGE_ENGINE 在 NDB 8.0.31 之前,這僅供內部使用。NDB 8.0.31 和更新版本:切換 (僅) 包含 NDBCLUSTER 儲存引擎 ON
WITH_NDBMTD 建置多執行緒資料節點二進位檔 ON
WITH_NDB_DEBUG 產生用於測試或疑難排解的偵錯組建。 OFF
WITH_NDB_JAVA 啟用建置 Java 和 ClusterJ 支援。預設啟用。僅 MySQL Cluster 支援。 ON
WITH_NDB_PORT 使用此選項建置的管理伺服器所使用的預設通訊埠。如果未使用此選項來建置,則管理伺服器的預設通訊埠為 1186。 [none]
WITH_NDB_TEST 包含 NDB API 測試程式。 OFF
WITH_NDB_TLS_SEARCH_PATH NDB 程式用於搜尋 TLS 憑證和金鑰檔案的預設路徑。 $HOME/ndb-tls
WITH_NUMA 設定 NUMA 記憶體配置原則
WITH_PACKAGE_FLAGS 對於通常用於 RPM/DEB 套件的旗標,是否將它們新增至那些平台上的獨立建置
WITH_PROTOBUF 要使用哪個 Protocol Buffers 套件 bundled
WITH_RAPID 是否建置快速開發週期外掛程式 ON
WITH_RAPIDJSON RapidJSON 支援的類型 bundled
WITH_ROUTER 是否建置 MySQL Router ON
WITH_SHOW_PARSE_TREE 支援 SHOW PARSE_TREE 偵錯陳述式
WITH_SSL SSL 支援的類型 system
WITH_SYSTEMD 啟用 systemd 支援檔案的安裝 OFF
WITH_SYSTEMD_DEBUG 啟用額外的 systemd 偵錯資訊 OFF
WITH_SYSTEM_LIBS 設定未明確設定的程式庫選項的系統值 OFF
WITH_TCMALLOC 是否連結 -ltcmalloc。僅 Linux 支援 BUNDLED OFF
WITH_TEST_TRACE_PLUGIN 建置測試通訊協定追蹤外掛程式 OFF
WITH_TSAN 啟用 ThreadSanitizer OFF
WITH_UBSAN 啟用未定義行為消毒器 OFF
WITH_UNIT_TESTS 使用單元測試編譯 MySQL ON
WITH_UNIXODBC 啟用 unixODBC 支援 OFF
WITH_VALGRIND 是否在 Valgrind 標頭檔中編譯 OFF
WITH_WIN_JEMALLOC 包含 jemalloc.dll 的目錄路徑
WITH_ZLIB zlib 支援的類型 bundled
WITH_ZSTD zstd 支援的類型 bundled
WITH_xxx_STORAGE_ENGINE 將儲存引擎 xxx 靜態編譯到伺服器中

一般選項

  • -DBUILD_CONFIG=mysql_release

    此選項使用 Oracle 用於產生官方 MySQL 版本之二進位發行版的相同建置選項來設定原始碼散佈。

  • -DWITH_BUILD_ID=bool

    在 Linux 系統上,會產生唯一的建置 ID,此 ID 會作為 build_id 系統變數的值,並在啟動時寫入 MySQL 伺服器記錄檔。將此選項設定為 OFF 以停用此功能。

    此選項在 Linux 以外的平台上沒有作用。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否將執行階段程式庫與 Windows 的伺服器 MSI 和 Zip 套件捆綁在一起。

  • -DCMAKE_BUILD_TYPE=type

    要產生的建置類型

    • RelWithDebInfo:啟用最佳化並產生偵錯資訊。這是預設的 MySQL 建置類型。

    • Release:啟用最佳化但省略偵錯資訊以縮減建置大小。

    • Debug:停用最佳化並產生偵錯資訊。如果啟用 WITH_DEBUG 選項,也會使用此建置類型。也就是說,-DWITH_DEBUG=1-DCMAKE_BUILD_TYPE=Debug 的效果相同。

    不支援選項值 NoneMinSizeRel

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此選項會影響 make package 作業產生多個安裝套件檔案或單一檔案。如果停用,則作業會產生多個安裝套件檔案,如果您只想安裝完整 MySQL 安裝的子集,這可能會很有用。如果啟用,則會產生單一檔案以安裝所有項目。

  • -DFORCE_INSOURCE_BUILD=bool

    定義是否強制使用原始碼內建置。建議使用原始碼外部建置,因為它們允許從相同來源進行多個建置,並且可以透過移除建置目錄來快速執行清除。若要強制使用原始碼內建置,請使用 -DFORCE_INSOURCE_BUILD=ON 叫用 CMake

  • -DFORCE_COLORED_OUTPUT=bool

    定義在命令列上編譯時是否為 gccclang 啟用彩色編譯器輸出。預設為 OFF

安裝配置選項

CMAKE_INSTALL_PREFIX 選項指示基礎安裝目錄。其他名稱形式為 INSTALL_xxx 的選項,表示元件位置,其值會被解讀為相對於前綴的路徑,而且它們的值是相對路徑名稱。它們的值不應包含前綴。

儲存引擎選項

儲存引擎以插件形式建置。您可以將插件建置為靜態模組(編譯到伺服器中)或動態模組(建置為動態程式庫,必須使用 INSTALL PLUGIN 陳述式或 --plugin-load 選項安裝到伺服器中才能使用)。某些插件可能不支援靜態或動態建置。

InnoDBMyISAMMERGEMEMORYCSV 引擎是強制性的(始終編譯到伺服器中),並且不需要明確安裝。

若要將儲存引擎靜態編譯到伺服器中,請使用 -DWITH_engine_STORAGE_ENGINE=1。一些允許的 engine 值為 ARCHIVEBLACKHOLEEXAMPLEFEDERATED。範例

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

若要使用 NDB Cluster 支援來建置 MySQL,請使用 WITH_NDB 選項。

注意

不可能在沒有效能架構支援的情況下編譯。如果希望在沒有特定類型的檢測的情況下進行編譯,可以使用以下 CMake 選項來完成

DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION

例如,若要在沒有互斥鎖檢測的情況下編譯,請使用 -DDISABLE_PSI_MUTEX=1 設定 MySQL。

若要從組建中排除儲存引擎,請使用 -DWITH_engine_STORAGE_ENGINE=0。範例

-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0

也可以使用 -DWITHOUT_engine_STORAGE_ENGINE=1 從組建中排除儲存引擎(但建議使用 -DWITH_engine_STORAGE_ENGINE=0)。範例

-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

如果沒有為給定的儲存引擎指定 -DWITH_engine_STORAGE_ENGINE-DWITHOUT_engine_STORAGE_ENGINE,則該引擎會建置為共用模組,如果無法建置為共用模組,則會排除。

功能選項

  • -DADD_GDB_INDEX=bool

    此選項決定是否在二進位檔案中啟用 .gdb_index 區段的產生,這會使在偵錯器中載入它們的速度更快。預設情況下會停用此選項。lld 連結器會被使用,如果使用 lld 或 GNU gold 以外的連結器,則不會產生效果。

  • -DCOMPILATION_COMMENT=string

    關於編譯環境的描述性註解。雖然 mysqld 使用 COMPILATION_COMMENT_SERVER,但其他程式會使用 COMPILATION_COMMENT

  • -DCOMPRESS_DEBUG_SECTIONS=bool

    是否要壓縮二進位可執行檔案的偵錯區段(僅限 Linux)。壓縮可執行偵錯區段可節省空間,但會在組建過程中耗費額外的 CPU 時間。

    預設值為 OFF。如果未明確設定此選項,但設定了 COMPRESS_DEBUG_SECTIONS 環境變數,則該選項的值會取自該變數。

  • -DCOMPILATION_COMMENT_SERVER=string

    關於 mysqld 使用的編譯環境描述性註解(例如,設定 version_comment 系統變數)。伺服器以外的程式會使用 COMPILATION_COMMENT

  • -DDEFAULT_CHARSET=charset_name

    伺服器字元集。預設情況下,MySQL 使用 utf8mb4 字元集。

    charset_name 可以是 binaryarmscii8asciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8mb3utf8mb4utf16utf16leutf32 之一。

    可以使用 --character-set-server 選項在伺服器啟動時設定此值。

  • -DDEFAULT_COLLATION=collation_name

    伺服器排序規則。預設情況下,MySQL 使用 utf8mb4_0900_ai_ci。使用 SHOW COLLATION 陳述式來判斷每個字元集有哪些可用的排序規則。

    可以使用 --collation_server 選項在伺服器啟動時設定此值。

  • -DDISABLE_PSI_COND=bool

    是否排除效能架構條件檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_FILE=bool

    是否排除效能架構檔案檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_IDLE=bool

    是否排除效能架構閒置檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_MEMORY=bool

    是否排除效能架構記憶體檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_METADATA=bool

    是否排除效能架構中繼資料檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_MUTEX=bool

    是否排除效能架構互斥鎖檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_RWLOCK=bool

    是否排除效能架構讀寫鎖檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_SOCKET=bool

    是否排除效能架構套接字檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_SP=bool

    是否排除效能架構儲存程式檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STAGE=bool

    是否排除 Performance Schema 階段檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除 Performance Schema 陳述式檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除 Performance Schema 陳述式摘要檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除 Performance Schema 資料表檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_PS=bool

    排除 Performance Schema 預處理語句實例檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_THREAD=bool

    排除 Performance Schema 執行緒檢測。預設值為 OFF(包含)。

    僅在不使用任何檢測的情況下建置時停用執行緒,因為其他檢測具有執行緒的依賴性。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除 Performance Schema 交易檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_DATA_LOCK=bool

    排除 Performance Schema 資料鎖定檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_ERROR=bool

    排除 Performance Schema 伺服器錯誤檢測。預設值為 OFF(包含)。

  • -DENABLE_EXPERIMENTAL_SYSVARS=bool

    是否啟用實驗性的 InnoDB 系統變數。實驗性系統變數適用於從事 MySQL 開發的人員,僅應在開發或測試環境中使用,並且可能會在未來的 MySQL 版本中移除,恕不另行通知。有關實驗性系統變數的資訊,請參閱 MySQL 原始碼樹中的 /storage/innobase/handler/ha_innodb.cc。可以透過搜尋 PLUGIN_VAR_EXPERIMENTAL 來識別實驗性系統變數。

  • -DWITHOUT_SERVER=bool

    是否在不使用 MySQL 伺服器的情況下建置。預設值為 OFF,表示會建置伺服器。

    這被視為實驗性選項;建議使用伺服器進行建置。

  • -DENABLE_GCOV=bool

    是否包含 gcov 支援(僅限 Linux)。

  • -DENABLE_GPROF=bool

    是否啟用 gprof(僅限最佳化的 Linux 建置)。

  • -DENABLED_LOCAL_INFILE=bool

    此選項控制 MySQL 用戶端程式庫中編譯時預設的 LOCAL 功能。因此,未進行明確安排的用戶端會根據 MySQL 建置時指定的 ENABLED_LOCAL_INFILE 設定來停用或啟用 LOCAL 功能。

    預設情況下,MySQL 二進位發行版本中的用戶端程式庫會在停用 ENABLED_LOCAL_INFILE 的情況下編譯。如果您從原始碼編譯 MySQL,請根據未進行明確安排的用戶端應該停用還是啟用 LOCAL 功能,使用停用或啟用的 ENABLED_LOCAL_INFILE 來設定它。

    ENABLED_LOCAL_INFILE 控制用戶端 LOCAL 功能的預設值。對於伺服器,local_infile 系統變數控制伺服器端的 LOCAL 功能。若要明確導致伺服器拒絕或允許 LOAD DATA LOCAL 陳述式(無論用戶端程式和程式庫在建置時或執行時如何設定),請使用停用或啟用的 --local-infile 分別啟動 mysqldlocal_infile 也可以在執行時設定。請參閱第 8.1.6 節,「LOAD DATA LOCAL 的安全性考量」

  • -DENABLED_PROFILING=bool

    是否啟用查詢效能分析程式碼(用於 SHOW PROFILESHOW PROFILES 陳述式)。

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    預設情況下,CMake 會檢查支援的編譯器的最低版本;若要停用此檢查,請使用 -DFORCE_UNSUPPORTED_COMPILER=ON

  • -DSHOW_SUPPRESSED_COMPILER_WARNINGS=bool

    顯示隱藏的編譯器警告,並在不使用 -Werror 失敗的情況下顯示。預設值為 OFF

  • -DFPROFILE_GENERATE=bool

    是否產生設定檔導向最佳化 (PGO) 資料。此選項可用於實驗 GCC 的 PGO。請參閱 MySQL 原始碼發行版本中的 cmake/fprofile.cmake,以取得有關使用 FPROFILE_GENERATEFPROFILE_USE 的資訊。這些選項已使用 GCC 8 和 9 進行測試。

  • -DFPROFILE_USE=bool

    是否使用設定檔導向最佳化 (PGO) 資料。此選項可用於實驗 GCC 的 PGO。請參閱 MySQL 原始碼發行版本中的 cmake/fprofile.cmake 檔案,以取得有關使用 FPROFILE_GENERATEFPROFILE_USE 的資訊。這些選項已使用 GCC 8 和 9 進行測試。

    啟用 FPROFILE_USE 也會啟用 WITH_LTO

  • -DHAVE_PSI_MEMORY_INTERFACE=bool

    是否為動態儲存中使用的記憶體配置函式(ut::aligned_name 程式庫函式)啟用效能架構記憶體追蹤模組,以追蹤過度對齊的類型。

  • -DIGNORE_AIO_CHECK=bool

    如果在 Linux 上給定 -DBUILD_CONFIG=mysql_release 選項,則預設情況下必須連結 libaio 程式庫。如果您沒有 libaio 或不想安裝它,可以透過指定 -DIGNORE_AIO_CHECK=1 來抑制對它的檢查。

  • -DMAX_INDEXES=num

    每個資料表的最大索引數。預設值為 64。最大值為 255。小於 64 的值會被忽略,並使用預設值 64。

  • -DMYSQL_MAINTAINER_MODE=bool

    是否啟用 MySQL 維護者特定的開發環境。如果啟用,此選項會導致編譯器警告變成錯誤。

  • -DWITH_DEVELOPER_ENTITLEMENTS=bool

    是否將 get-task-allow 權限新增至所有可執行檔,以便在發生意外的伺服器停止時產生核心傾印。

    在 macOS 11+ 上,核心傾印限制為具有 com.apple.security.get-task-allow 權限的處理程序,此 CMake 選項會啟用該權限。該權限允許其他處理程序附加並讀取/修改處理程序的記憶體,並允許 --core-file 如預期般運作。

  • -DMUTEX_TYPE=type

    InnoDB 使用的互斥鎖類型。選項包括:

    • event:使用事件互斥鎖。這是預設值,也是原始的 InnoDB 互斥鎖實作。

    • sys:在 UNIX 系統上使用 POSIX 互斥鎖。如果有的話,在 Windows 上使用 CRITICAL_SECTION 物件。

    • futex:使用 Linux futexes 而不是條件變數來排程等待的執行緒。

  • -DMYSQLX_TCP_PORT=port_num

    X Plugin 監聽 TCP/IP 連線的連接埠號碼。預設值為 33060。

    這個值可以在伺服器啟動時使用 mysqlx_port 系統變數設定。

  • -DMYSQLX_UNIX_ADDR=file_name

    伺服器監聽 X Plugin Socket 連線的 Unix Socket 檔案路徑。這必須是一個絕對路徑名稱。預設值為 /tmp/mysqlx.sock

    這個值可以在伺服器啟動時使用 mysqlx_port 系統變數設定。

  • -DMYSQL_PROJECT_NAME=name

    對於 Windows 或 macOS,要併入專案檔案名稱的專案名稱。

  • -DMYSQL_TCP_PORT=port_num

    伺服器監聽 TCP/IP 連線的連接埠號碼。預設值為 3306。

    這個值可以在伺服器啟動時使用 --port 選項設定。

  • -DMYSQL_UNIX_ADDR=file_name

    伺服器監聽 Socket 連線的 Unix Socket 檔案路徑。這必須是一個絕對路徑名稱。預設值為 /tmp/mysql.sock

    這個值可以在伺服器啟動時使用 --socket 選項設定。

  • -DOPTIMIZER_TRACE=bool

    是否支援最佳化追蹤。請參閱 MySQL 內部:追蹤最佳化器

  • -DREPRODUCIBLE_BUILD=bool

    對於 Linux 系統上的建置,這個選項控制是否要額外注意建立獨立於建置位置和時間的建置結果。

    對於 RelWithDebInfo 建置,此選項預設為 ON

  • -DWITH_LD=string

    CMake 預設使用標準連結器。您可以選擇性地傳入 lldmold 來指定替代的連結器。mold 必須是版本 2 或更新的版本。

    這個選項可以在非企業 Linux 的 Linux 系統上使用,企業 Linux 總是使用 ld 連結器。

    注意

    先前,可以使用選項 USE_LD_LLD 來啟用(預設)或明確停用 Clang 的 LLVM lld 連結器。在 MySQL 8.3 中,USE_LD_LLD 已被移除。

  • -DWIN_DEBUG_NO_INLINE=bool

    是否在 Windows 上停用函式內聯。預設值為 OFF(啟用內聯)。

  • -DWITH_ANT=path_name

    設定 Ant 的路徑,建置 GCS Java 包裝函式時需要。將 WITH_ANT 設定為儲存 Ant tarball 或解壓縮封存檔的目錄路徑。當 WITH_ANT 未設定,或設定為特殊值 system 時,建置程序會假設在 $PATH 中存在二進位 ant

  • -DWITH_ASAN=bool

    是否啟用 AddressSanitizer,適用於支援它的編譯器。預設值為 OFF

  • -DWITH_ASAN_SCOPE=bool

    是否啟用 AddressSanitizer -fsanitize-address-use-after-scope Clang 標誌以進行 use-after-scope 偵測。預設為關閉。要使用此選項,也必須啟用 -DWITH_ASAN

  • -DWITH_AUTHENTICATION_CLIENT_PLUGINS=bool

    如果建置任何對應的伺服器身份驗證外掛程式,此選項會自動啟用。因此,它的值取決於其他 CMake 選項,不應該明確設定。

  • -DWITH_AUTHENTICATION_LDAP=bool

    如果無法建置 LDAP 身份驗證外掛程式,是否報告錯誤

    • 如果此選項停用(預設),如果找到必要的標頭檔案和程式庫,則會建置 LDAP 外掛程式。如果找不到,CMake 會顯示相關的說明。

    • 如果啟用此選項,無法找到必要的標頭檔案和程式庫會導致 CMake 產生錯誤,阻止建置伺服器。

  • -DWITH_AUTHENTICATION_PAM=bool

    是否為包含此外掛程式的原始碼樹建置 PAM 身份驗證外掛程式。(請參閱 第 8.4.1.4 節,"PAM 可插拔身份驗證"。)如果指定此選項且無法編譯此外掛程式,則建置會失敗。

  • -DWITH_AWS_SDK=path_name

    Amazon Web Services 軟體開發套件的位置。

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    是否將用戶端協定追蹤框架建置到用戶端程式庫中。預設情況下,此選項已啟用。

    有關編寫協定追蹤用戶端外掛程式的資訊,請參閱 編寫協定追蹤外掛程式

    另請參閱 WITH_TEST_TRACE_PLUGIN 選項。

  • -DWITH_CURL=curl_type

    curl 程式庫的位置。curl_type 可以是 system(使用系統 curl 程式庫)、curl 程式庫的路徑名稱、no|off|none 以停用 curl 支援,或 bundled 以使用 extra/curl/ 中的綑綁 curl 發行版。

  • -DWITH_DEBUG=bool

    是否包含偵錯支援。

    使用偵錯支援配置 MySQL 可以讓您在啟動伺服器時使用 --debug="d,parser_debug" 選項。這會導致用於處理 SQL 語句的 Bison 解析器將解析器追蹤轉儲到伺服器的標準錯誤輸出。通常,此輸出會寫入錯誤日誌。

    當使用 WITH_DEBUG 選項編譯偵錯支援時,在 UNIV_DEBUG 下定義了 InnoDB 儲存引擎的同步偵錯檢查。當編譯偵錯支援時,可以使用 innodb_sync_debug 配置選項來啟用或停用 InnoDB 同步偵錯檢查。

    啟用 WITH_DEBUG 也會啟用 Debug Sync。此功能用於測試和偵錯。編譯後,Debug Sync 在執行時預設為停用。若要啟用它,請使用 --debug-sync-timeout=N 選項啟動 mysqld,其中 N 是大於 0 的逾時值。(預設值為 0,表示停用 Debug Sync。)N 會成為個別同步點的預設逾時。

    當使用 WITH_DEBUG 選項編譯偵錯支援時,可以使用 InnoDB 儲存引擎的同步偵錯檢查。

    如需 Debug Sync 功能以及如何使用同步點的說明,請參閱 MySQL 內部:測試同步

  • -DWITH_EDITLINE=value

    要使用的 libedit/editline 程式庫。允許的值為 bundled(預設)和 system

  • -DWITH_ICU={icu_type|path_name}

    MySQL 使用 Unicode 國際組件 (ICU) 來支援正規表示式運算。WITH_ICU 選項表示要包含的 ICU 支援類型或要使用的 ICU 安裝路徑名稱。

    • icu_type 可以是下列其中一個值:

      • bundled:使用與發行版綑綁在一起的 ICU 程式庫。這是預設值,也是 Windows 唯一支援的選項。

      • system:使用系統 ICU 程式庫。

    • path_name 是要使用的 ICU 安裝路徑名稱。這可能比使用 systemicu_type 值更佳,因為它可以防止 CMake 偵測和使用系統上安裝的較舊或不正確的 ICU 版本。(另一種允許執行相同操作的方法是將 WITH_ICU 設定為 system 並將 CMAKE_PREFIX_PATH 選項設定為 path_name。)

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    是否包含額外的 InnoDB 除錯支援。

    啟用 WITH_INNODB_EXTRA_DEBUG 會開啟額外的 InnoDB 除錯檢查。只有在啟用 WITH_DEBUG 時,才能啟用此選項。

  • -DWITH_JEMALLOC=bool

    是否與 -ljemalloc 連結。如果啟用,內建的 malloc()calloc()realloc()free() 常式將會停用。預設值為 OFF

    WITH_JEMALLOCWITH_TCMALLOC 互斥。

  • -DWITH_WIN_JEMALLOC=string

    在 Windows 上,傳入包含 jemalloc.dll 的目錄路徑,以啟用 jemalloc 功能。建置系統會將 jemalloc.dll 複製到與 mysqld.exe 和/或 mysqld-debug.exe 相同的目錄,並將其用於記憶體管理操作。如果找不到 jemalloc.dll 或它未匯出所需的功能,則會使用標準的記憶體函式。資訊層級的記錄訊息會記錄是否找到並使用 jemalloc。

    此選項已針對 Windows 的官方 MySQL 二進位檔啟用。

  • -DWITH_LIBEVENT=string

    要使用的 libevent 程式庫。允許的值為 bundled (預設) 和 system。如果指定 system 並且找不到系統 libevent 程式庫,則無論如何都會發生錯誤,並且不會使用捆綁的 libevent

    X Plugin 和 MySQL Router 需要 libevent 程式庫。

  • -DWITH_LIBWRAP=bool

    是否包含 libwrap (TCP wrappers) 支援。

  • -DWITH_LOCK_ORDER=bool

    是否啟用 LOCK_ORDER 工具。預設情況下,此選項會停用,且伺服器建置不包含任何工具。如果啟用工具,則可以使用 LOCK_ORDER 工具,如第 7.9.3 節「LOCK_ORDER 工具」所述。

    注意

    啟用 WITH_LOCK_ORDER 選項後,MySQL 建置需要 flex 程式。

  • -DWITH_LSAN=bool

    是否在不使用 AddressSanitizer 的情況下執行 LeakSanitizer。預設值為 OFF

  • -DWITH_LTO=bool

    如果編譯器支援,是否啟用連結時間最佳化器。預設值為 OFF,除非啟用 FPROFILE_USE

  • -DWITH_LZ4=lz4_type

    WITH_LZ4 選項表示 zlib 支援的來源

    • bundled: 使用與發行版捆綁的 lz4 程式庫。這是預設值。

    • system: 使用系統 lz4 程式庫。

  • -DWITH_MECAB={disabled|system|path_name}

    使用此選項來編譯 MeCab 剖析器。如果已將 MeCab 安裝到其預設安裝目錄,請設定 -DWITH_MECAB=systemsystem 選項適用於使用原生套件管理公用程式從來源或二進位檔執行的 MeCab 安裝。如果將 MeCab 安裝到自訂安裝目錄,請指定 MeCab 安裝的路徑,例如,-DWITH_MECAB=/opt/mecab。如果 system 選項不起作用,指定 MeCab 安裝路徑在所有情況下都應該有效。

    如需相關資訊,請參閱第 14.9.9 節「MeCab 全文剖析器外掛程式」

  • -DWITH_MSAN=bool

    是否為支援它的編譯器啟用 MemorySanitizer。預設值為關閉。

    如果要啟用此選項,則所有連結到 MySQL 的程式庫也都必須使用啟用選項進行編譯。

  • -DWITH_MSCRT_DEBUG=bool

    是否啟用 Visual Studio CRT 記憶體洩漏追蹤。預設值為 OFF

  • -DMSVC_CPPCHECK=bool

    是否啟用 MSVC 程式碼分析。預設值為 ON

  • -DWITH_MYSQLX=bool

    是否建置對 X Plugin 的支援。預設值為 ON。請參閱第 22 章「將 MySQL 用作文件儲存」

  • -DWITH_NUMA=bool

    明確設定 NUMA 記憶體配置原則。CMake 會根據目前平台是否具有 NUMA 支援來設定預設 WITH_NUMA 值。對於沒有 NUMA 支援的平台,CMake 的行為如下:

    • 如果沒有 NUMA 選項(一般情況),CMake 會正常繼續,只產生此警告:NUMA 程式庫遺失或所需的版本不可用

    • 使用 -DWITH_NUMA=ONCMake 會中止並顯示此錯誤:NUMA 程式庫遺失或所需的版本不可用

  • -DWITH_PACKAGE_FLAGS=bool

    對於通常用於 RPM 和 Debian 套件的旗標,是否將它們新增至這些平台上獨立的建置。對於非除錯建置,預設值為 ON

  • -DWITH_PROTOBUF=protobuf_type

    要使用哪個 Protocol Buffers 套件。protobuf_type 可以是下列其中一個值:

    • bundled: 使用與發行版捆綁的套件。這是預設值。您可以選擇使用 INSTALL_PRIV_LIBDIR 來修改動態 Protobuf 程式庫目錄。

    • system: 使用系統上安裝的套件。

    其他值會被忽略,並回退到 bundled

  • -DWITH_RAPID=bool

    是否建置快速開發週期外掛程式。啟用後,會在建置樹狀結構中建立一個包含這些外掛程式的 rapid 目錄。停用後,不會在建置樹狀結構中建立 rapid 目錄。預設值為 ON,除非從原始程式碼樹狀結構中移除 rapid 目錄,在這種情況下,預設值會變為 OFF

  • -DWITH_RAPIDJSON=rapidjson_type

    要包含的 RapidJSON 程式庫支援類型。rapidjson_type 可以是下列其中一個值:

    • bundled: 使用與發行版捆綁的 RapidJSON 程式庫。這是預設值。

    • system: 使用系統 RapidJSON 程式庫。需要 1.1.0 或更新版本。

  • -DWITH_ROUTER=bool

    是否建置 MySQL Router。預設值為 ON

  • -DWITH_SSL={ssl_type|path_name}

    為了支援加密連線、用於亂數產生的熵以及其他與加密相關的操作,MySQL 必須使用 SSL 程式庫建置。此選項指定要使用的 SSL 程式庫。

    • ssl_type 可以是下列其中一個值:

      • system: 使用系統 OpenSSL 程式庫。這是預設值。

        在 macOS 和 Windows 上,使用 system 會將 MySQL 設定為如同使用 path_name 指向手動安裝的 OpenSSL 程式庫呼叫 CMake 一樣進行建置。這是因為它們沒有系統 SSL 程式庫。在 macOS 上,brew install openssl 會安裝到 /usr/local/opt/openssl,以便 system 可以找到它。在 Windows 上,它會檢查 %ProgramFiles%/OpenSSL%ProgramFiles%/OpenSSL-Win32%ProgramFiles%/OpenSSL-Win64C:/OpenSSLC:/OpenSSL-Win32C:/OpenSSL-Win64

      • yes: 這是 system 的同義詞。

      • opensslversion: 使用替代的 OpenSSL 系統套件,例如 EL7 上的 openssl11,或 EL8 上的 openssl3(或 openssl3-fips)。

        驗證外掛程式 (例如 LDAP 和 Kerberos) 會停用,因為它們不支援這些替代版本的 OpenSSL。

    • path_name 是要使用的 OpenSSL 安裝路徑名稱。這比使用 ssl_typesystem 更為優先,因為它可以防止 CMake 偵測並使用系統上安裝的較舊或不正確的 OpenSSL 版本。(另一種達到相同目的的方法是將 WITH_SSL 設定為 system,並將 CMAKE_PREFIX_PATH 選項設定為 path_name。)

    有關設定 SSL 函式庫的更多資訊,請參閱第 2.8.6 節「設定 SSL 函式庫支援」

  • -DWITH_SHOW_PARSE_TREE=bool

    啟用伺服器中對 SHOW PARSE_TREE 的支援,僅用於開發和偵錯。不適用於發行版本或在生產環境中支援。

  • -DWITH_SYSTEMD=bool

    是否啟用安裝 systemd 支援檔案。預設情況下,此選項停用。啟用時,會安裝 systemd 支援檔案,並且不會安裝諸如 mysqld_safe 和 System V 初始化指令碼之類的指令碼。在 systemd 不可用的平台上,啟用 WITH_SYSTEMD 會導致 CMake 發生錯誤。

    當使用此選項建置伺服器時,MySQL 會將所有 systemd 訊息包含在伺服器的錯誤日誌中(請參閱第 7.4.2 節「錯誤日誌」)。

    有關使用 systemd 的更多資訊,請參閱第 2.5.9 節「使用 systemd 管理 MySQL 伺服器」。該節也包含有關指定在 [mysqld_safe] 選項群組中指定之選項的資訊。由於使用 systemd 時不會安裝 mysqld_safe,因此必須以其他方式指定這些選項。

  • -DWITH_SYSTEM_LIBS=bool

    此選項作為一個「保護傘」選項,用於設定任何未明確設定的以下 CMake 選項的 system 值:WITH_CURLWITH_EDITLINEWITH_ICUWITH_LIBEVENTWITH_LZ4WITH_LZMAWITH_PROTOBUFWITH_RE2WITH_SSLWITH_ZLIBWITH_ZSTD

  • -DWITH_SYSTEMD_DEBUG=bool

    是否產生額外的 systemd 偵錯資訊,適用於使用 systemd 執行 MySQL 的平台。預設值為 OFF

  • -DWITH_TCMALLOC=bool

    是否連結 -ltcmalloc。如果啟用,內建的 malloc()calloc()realloc()free() 常式將會停用。預設值為 OFF

    來源中包含 tcmalloc 函式庫;您可以將此選項設定為 BUNDLED,使建置使用綁定的版本。BUNDLED 僅在 Linux 系統上受支援。

    WITH_TCMALLOCWITH_JEMALLOC 互斥。

  • -DWITH_TEST_TRACE_PLUGIN=bool

    是否建置測試協定追蹤用戶端外掛程式(請參閱使用測試協定追蹤外掛程式)。預設情況下,此選項停用。除非啟用 WITH_CLIENT_PROTOCOL_TRACING 選項,否則啟用此選項無效。如果 MySQL 設定為同時啟用這兩個選項,則會建置內建測試協定追蹤外掛程式的 libmysqlclient 用戶端函式庫,並且所有標準 MySQL 用戶端都會載入此外掛程式。但是,即使啟用測試外掛程式,預設情況下也無效。使用環境變數來控制外掛程式;請參閱使用測試協定追蹤外掛程式

    注意

    如果您想使用自己的協定追蹤外掛程式,請不要啟用 WITH_TEST_TRACE_PLUGIN 選項,因為一次只能載入一個此外掛程式,並且嘗試載入第二個外掛程式會發生錯誤。如果您已建置啟用測試協定追蹤外掛程式的 MySQL,以查看其運作方式,則必須重新建置沒有它的 MySQL,才能使用自己的外掛程式。

    有關撰寫追蹤外掛程式的資訊,請參閱撰寫協定追蹤外掛程式

  • -DWITH_TSAN=bool

    是否啟用 ThreadSanitizer,適用於支援它的編譯器。預設值為關閉。

  • -DWITH_UBSAN=bool

    是否啟用未定義行為檢測工具,適用於支援它的編譯器。預設值為關閉。

  • -DWITH_UNIT_TESTS={ON|OFF}

    如果啟用,則使用單元測試編譯 MySQL。除非未編譯伺服器,否則預設值為 ON

  • -DWITH_UNIXODBC=1

    啟用 unixODBC 支援,適用於 Connector/ODBC。

  • -DWITH_VALGRIND=bool

    是否編譯 Valgrind 標頭檔,將 Valgrind API 公開給 MySQL 程式碼。預設值為 OFF

    若要產生可感知 Valgrind 的偵錯建置,-DWITH_VALGRIND=1 通常與 -DWITH_DEBUG=1 結合使用。請參閱建置偵錯組態

  • -DWITH_ZLIB=zlib_type

    某些功能要求伺服器使用壓縮函式庫支援建置,例如 COMPRESS()UNCOMPRESS() 函數,以及用戶端/伺服器協定的壓縮。WITH_ZLIB 選項指出 zlib 支援的來源

    zlib 的最低支援版本為 1.2.13。

    • bundled:使用與散發套件捆綁的 zlib 函式庫。這是預設值。

    • system:使用系統 zlib 函式庫。

  • -DWITH_ZSTD=zstd_type

    使用 zstd 演算法的連線壓縮(請參閱第 6.2.8 節「連線壓縮控制」)要求伺服器使用 zstd 函式庫支援建置。WITH_ZSTD 選項指出 zstd 支援的來源

    • bundled:使用與散發套件捆綁的 zstd 函式庫。這是預設值。

    • system:使用系統 zstd 函式庫。

編譯器旗標

若要指定您自己的 C 和 C++ 編譯器旗標,對於不影響最佳化的旗標,請使用 CMAKE_C_FLAGSCMAKE_CXX_FLAGS CMake 選項。

當您提供自己的編譯器旗標時,您可能還想指定 CMAKE_BUILD_TYPE

例如,要在 64 位元 Linux 機器上建立 32 位元發行版本,請執行以下操作:

$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
  -DCMAKE_CXX_FLAGS=-m32 \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果您設定會影響最佳化的旗標(-Onumber),您必須設定 CMAKE_C_FLAGS_build_type 和/或 CMAKE_CXX_FLAGS_build_type 選項,其中 build_type 對應於 CMAKE_BUILD_TYPE 的值。若要為預設組建類型(RelWithDebInfo)指定不同的最佳化,請設定 CMAKE_C_FLAGS_RELWITHDEBINFOCMAKE_CXX_FLAGS_RELWITHDEBINFO 選項。例如,若要在 Linux 上使用 -O3 並包含偵錯符號進行編譯,請執行以下操作:

$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

用於編譯 NDB 叢集的 CMake 選項

若要編譯支援 NDB 叢集的 MySQL,您可以使用 -DWITH_NDB,這會使組建包含 NDB 儲存引擎和所有 NDB 程式。預設會啟用此選項。若要防止組建 NDB 儲存引擎外掛程式,請使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF。組建的其他方面可以使用本節中列出的其他選項來控制。

以下選項適用於使用 NDB 叢集支援組建 MySQL 原始碼時。

  • -DNDB_UTILS_LINK_DYNAMIC={ON|OFF}

    控制 NDB 公用程式(例如 ndb_drop_table)是以靜態方式 (OFF) 或動態方式 (ON) 與 ndbclient 連結;預設為 OFF(靜態連結)。通常,在組建這些公用程式時會使用靜態連結,以避免 LD_LIBRARY_PATH 的問題,或者在安裝多個版本的 ndbclient 時使用。此選項適用於建立 Docker 映像,以及目標環境受到精確控制且希望縮小映像大小的其他情況。

  • -DWITH_CLASSPATH=path

    設定用於組建 MySQL NDB 叢集 Java 連接器的類別路徑。預設為空。如果使用 -DWITH_NDB_JAVA=OFF,則會忽略此選項。

  • -DWITH_ERROR_INSERT={ON|OFF}

    NDB 核心中啟用錯誤注入。僅用於測試;不打算用於組建生產二進位檔。預設為 OFF

  • -DWITH_NDB={ON|OFF}

    組建 MySQL NDB 叢集;組建 NDB 外掛程式和所有 NDB 叢集程式。

  • -DWITH_NDBAPI_EXAMPLES={ON|OFF}

    storage/ndb/ndbapi-examples/ 中組建 NDB API 範例程式。請參閱 NDB API 範例,以取得有關這些的資訊。

  • -DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}

    控制(僅)是否將 ndbcluster 外掛程式包含在組建中;WITH_NDB 會自動啟用此選項,因此建議您改為使用 WITH_NDB

  • -DWITH_NDBCLUSTER={ON|OFF} (已過時)

    組建並連結 mysqld 中的 NDB 儲存引擎的支援。

    此選項已過時,並且可能會最終移除;請改為使用 WITH_NDB

  • -DWITH_NDBMTD={ON|OFF}

    組建多執行緒資料節點可執行檔 ndbmtd。預設為 ON

  • -DWITH_NDB_DEBUG={ON|OFF}

    啟用組建 NDB 叢集二進位檔的偵錯版本。預設為 OFF

  • -DWITH_NDB_JAVA={ON|OFF}

    啟用使用 Java 支援組建 NDB 叢集,包括對 ClusterJ 的支援(請參閱 MySQL NDB 叢集 Java 連接器)。

    預設為 ON。如果您不希望使用 Java 支援編譯 NDB 叢集,您必須在執行 CMake 時明確指定 -DWITH_NDB_JAVA=OFF 來停用它。否則,如果找不到 Java,組建的設定將會失敗。

  • -DWITH_NDB_PORT=port

    導致組建的 NDB 叢集管理伺服器(ndb_mgmd)預設使用此 port。如果未設定此選項,產生的管理伺服器會預設嘗試使用連接埠 1186。

  • -DWITH_NDB_TEST={ON|OFF}

    如果啟用,則包含一組 NDB API 測試程式。預設為 OFF

  • -DWITH_NDB_TLS_SEARCH_PATH=path

    設定 ndb_sign_keys 和其他 NDB 程式搜尋 TLS 憑證和金鑰檔的預設路徑。

    Windows 平台的預設值為 $HOMEDIR/ndb-tls;對於其他平台(例如 Linux),則為 $HOME/ndb-tls