文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  MySQL 源码配置选项

2.8.7 MySQL 源码配置选项

CMake 程序提供了对如何配置 MySQL 源代码发行版的强大控制。通常,您可以使用 CMake 命令行上的选项来完成此操作。有关 CMake 支持的选项的信息,请在顶级源代码目录中运行以下任一命令

$> cmake . -LH

$> ccmake .

您还可以使用某些环境变量来影响 CMake。请参见 第 6.9 节,“环境变量”

对于布尔选项,可以使用值 1ON 来启用选项,或者使用 0OFF 来禁用选项。

许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,用于配置默认安装基本目录位置、TCP/IP 端口号和 Unix 套接字文件的 CMAKE_INSTALL_PREFIXMYSQL_TCP_PORTMYSQL_UNIX_ADDR 选项,可以在服务器启动时使用 mysqld--basedir--port--socket 选项进行更改。在适用的情况下,配置选项描述指示了相应的 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 排除性能模式条件检测 OFF
DISABLE_PSI_DATA_LOCK 排除性能模式数据锁检测 OFF
DISABLE_PSI_ERROR 排除性能模式服务器错误检测 OFF
DISABLE_PSI_FILE 排除性能模式文件检测 OFF
DISABLE_PSI_IDLE 排除性能模式空闲检测 OFF
DISABLE_PSI_MEMORY 排除性能模式内存检测 OFF
DISABLE_PSI_METADATA 排除性能模式元数据检测 OFF
DISABLE_PSI_MUTEX 排除性能模式互斥锁检测 OFF
DISABLE_PSI_PS 排除性能模式预处理语句 OFF
DISABLE_PSI_RWLOCK 排除性能模式读写锁检测 OFF
DISABLE_PSI_SOCKET 排除性能模式套接字检测 OFF
DISABLE_PSI_SP 排除性能模式存储程序检测 OFF
DISABLE_PSI_STAGE 排除性能模式阶段检测 OFF
DISABLE_PSI_STATEMENT 排除性能模式语句检测 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能模式 statements_digest 检测 OFF
DISABLE_PSI_TABLE 排除性能模式表检测 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 信息文件目录 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 套接字文件 /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 套接字文件 /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 构建适用于 Java 的 MySQL 集群连接器时使用的类路径。默认为空字符串。
WITH_CLIENT_PROTOCOL_TRACING 构建客户端协议跟踪框架 ON
WITH_CURL curl 库的位置
WITH_DEBUG 是否包含调试支持 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用默认编译器选项 ON
WITH_DEVELOPER_ENTITLEMENTS 是否将“get-task-allow”授权添加到 macOS 上的所有可执行文件,以便在服务器意外停止时生成核心转储 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 是否在不使用 AddressSanitizer 的情况下运行 LeakSanitizer 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 集群,包括 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 集群中受支持。 ON
WITH_NDB_PORT 使用此选项构建的管理服务器使用的默认端口。如果构建它时未使用此选项,则管理服务器的默认端口为 1186。 [无]
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 要使用的协议缓冲区包 bundled
WITH_RAPID 是否构建快速开发生命周期插件 ON
WITH_RAPIDJSON RapidJSON 支持的类型 bundled
WITH_ROUTER 是否构建 MySQL 路由器 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 链接。BUNDLED 仅在 Linux 上受支持 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 集群的 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

    是否排除性能模式阶段检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除性能模式语句检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除性能模式语句摘要检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除性能模式表检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_PS=bool

    排除性能模式预处理语句实例检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_THREAD=bool

    排除性能模式线程检测。默认值为 OFF(包含)。

    仅在构建时没有任何检测的情况下禁用线程,因为其他检测依赖于线程。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除性能模式事务检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_DATA_LOCK=bool

    排除性能模式数据锁检测。默认值为 OFF(包含)。

  • -DDISABLE_PSI_ERROR=bool

    排除性能模式服务器错误检测。默认值为 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 实验。有关使用 FPROFILE_GENERATEFPROFILE_USE 的信息,请参阅 MySQL 源代码发行版中的 cmake/fprofile.cmake。这些选项已在 GCC 8 和 9 上进行了测试。

  • -DFPROFILE_USE=bool

    是否使用配置文件引导优化 (PGO) 数据。此选项可用于使用 GCC 进行 PGO 实验。有关使用 FPROFILE_GENERATEFPROFILE_USE 的信息,请参阅 MySQL 源代码发行版中的 cmake/fprofile.cmake 文件。这些选项已在 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 futex 而不是条件变量来调度等待线程。

  • -DMYSQLX_TCP_PORT=port_num

    X 插件侦听 TCP/IP 连接的端口号。默认值为 33060。

    可以使用 mysqlx_port 系统变量在服务器启动时设置此值。

  • -DMYSQLX_UNIX_ADDR=file_name

    服务器在其上侦听 X 插件套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为 /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

    服务器在其上侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为 /tmp/mysql.sock

    可以使用 --socket 选项在服务器启动时设置此值。

  • -DOPTIMIZER_TRACE=bool

    是否支持优化器跟踪。请参阅 MySQL 内部结构:跟踪优化器

  • -DREPRODUCIBLE_BUILD=bool

    对于 Linux 系统上的构建,此选项控制是否采取额外措施来创建独立于构建位置和时间的构建结果。

    对于 RelWithDebInfo 构建,此选项默认为 ON

  • -DWITH_LD=string

    CMake 默认使用标准链接器。可以选择传入 lldmold 来指定备用链接器。mold 必须是 2 或更新版本。

    此选项可以在除 Enterprise Linux 之外的基于 Linux 的系统上使用,Enterprise 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 标志以进行范围后使用检测。默认值为 off。要使用此选项,还必须启用 -DWITH_ASAN

  • -DWITH_AUTHENTICATION_CLIENT_PLUGINS=bool

    如果构建了任何相应的服务器身份验证插件,则会自动启用此选项。因此,它的值取决于其他 CMake 选项,不应显式设置。

  • -DWITH_AUTHENTICATION_LDAP=bool

    如果无法构建 LDAP 身份验证插件,是否报告错误

    • 如果禁用此选项(默认),则会在找到所需的头文件和库时构建 LDAP 插件。如果找不到,CMake 会显示一条相关说明。

    • 如果启用此选项,则找不到所需的头文件和库会导致 CMake 产生错误,从而阻止服务器构建。

  • -DWITH_AUTHENTICATION_PAM=bool

    是否为包含此插件的源代码树构建 PAM 身份验证插件。(请参阅 第 8.4.1.5 节,“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 解析器将解析器跟踪转储到服务器的标准错误输出中。通常,此输出会写入错误日志。

    InnoDB 存储引擎的同步调试检查在 UNIV_DEBUG 下定义,并且在使用 WITH_DEBUG 选项编译调试支持时可用。编译调试支持后,可以使用 innodb_sync_debug 配置选项来启用或禁用 InnoDB 同步调试检查。

    启用 WITH_DEBUG 也会启用调试同步。此功能用于测试和调试。编译完成后,调试同步在运行时默认禁用。要启用它,请使用 --debug-sync-timeout=N 选项启动 mysqld,其中 N 是大于 0 的超时值。(默认值为 0,表示禁用调试同步。)N 将成为各个同步点的默认超时。

    使用 WITH_DEBUG 选项编译调试支持时,InnoDB 存储引擎的同步调试检查可用。

    有关调试同步工具以及如何使用同步点的说明,请参阅 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 安装的路径名。这可能比使用 icu_typesystem 更可取,因为它可以防止 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 或它未导出所需的功能,则使用标准内存函数。INFORMATION 级别的日志消息会记录是否找到并使用了 jemalloc。

    此选项对 Windows 的官方 MySQL 二进制文件启用。

  • -DWITH_LIBEVENT=string

    要使用的 libevent 库。允许的值为 bundled(默认值)和 system。如果指定了 system 并且找不到系统 libevent 库,则无论如何都会发生错误,并且不会使用捆绑的 libevent

    X Plugin 和 MySQL Router 需要 libevent 库。

  • -DWITH_LIBWRAP=bool

    是否包含 libwrap(TCP 包装器)支持。

  • -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。默认值为 off。

    要使此选项在启用时生效,链接到 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=ON 时,CMake 会中止并显示以下错误:缺少 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}

    为了支持加密连接、随机数生成的熵以及其他与加密相关的操作,必须使用 SSL 库构建 MySQL。此选项指定要使用的 SSL 库。

    • ssl_type 可以是以下值之一

      • system:使用系统 OpenSSL 库。这是默认值。

        在 macOS 和 Windows 上,使用 system 会将 MySQL 配置为像使用指向手动安装的 OpenSSL 库的 path_name 调用 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 运行 MySQL 的平台,是否生成额外的 systemd 调试信息。默认值为 OFF

  • -DWITH_TCMALLOC=bool

    是否与 -ltcmalloc 链接。如果启用,则禁用内置的 malloc()calloc()realloc()free() 例程。默认值为 OFF

    从 MySQL 8.4.1 开始,源代码中包含一个 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。默认值为 off。

  • -DWITH_UBSAN=bool

    对于支持它的编译器,是否启用未定义行为清理器。默认值为 off。

  • -DWITH_UNIT_TESTS={ON|OFF}

    如果启用,则使用单元测试编译 MySQL。默认值为 ON,除非未编译服务器。

  • -DWITH_UNIXODBC=1

    为 Connector/ODBC 启用 unixODBC 支持。

  • -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 集群,可以使用 -DWITH_NDB,这将导致构建包含 NDB 存储引擎和所有 NDB 程序。默认情况下启用此选项。要阻止构建 NDB 存储引擎插件,请使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF。可以使用本节中列出的其他选项来控制构建的其他方面。

以下选项适用于使用 NDB 集群支持构建 MySQL 源代码时。

  • -DNDB_UTILS_LINK_DYNAMIC={ON|OFF}

    控制 NDB 实用程序(例如 ndb_drop_table)是静态链接 ndbclientOFF)还是动态链接(ON);默认值为 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 的支持(请参见 适用于 Java 的 MySQL NDB 集群连接器)。

    默认情况下,此选项为 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