Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  MySQL Source-Configuration Options

2.8.7 MySQL 源代码配置选项

使用 CMake 程序可以对 MySQL 源代码分布进行大量的控制。通常,您可以使用 CMake 命令行选项来实现这一点。有关 CMake 支持的选项的信息,请在顶级源目录中运行以下命令之一:

$> cmake . -LH

$> ccmake .

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

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

许多选项配置编译时默认值,可以在服务器启动时被覆盖。例如,CMAKE_INSTALL_PREFIXMYSQL_TCP_PORTMYSQL_UNIX_ADDR 选项配置默认安装基目录位置、TCP/IP 端口号和 Unix 套接字文件,可以在服务器启动时使用 --basedir--port--socket 选项来更改 mysqld

以下部分提供了更多关于 CMake 选项的信息。

CMake 选项参考

以下表格显示了可用的 CMake 选项。在 Default 列中,PREFIX 代表 CMAKE_INSTALL_PREFIX 选项的值,该选项指定了安装基目录的位置。该值用作多个安装子目录的父目录。

表 2.13 MySQL 源代码配置选项参考(CMake)

Formats Description Default
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 排除性能模式条件instrumentation OFF
DISABLE_PSI_DATA_LOCK 排除性能模式数据锁instrumentation OFF
DISABLE_PSI_ERROR 排除性能模式服务器错误instrumentation OFF
DISABLE_PSI_FILE 排除性能模式文件instrumentation OFF
DISABLE_PSI_IDLE 排除性能模式空闲instrumentation OFF
DISABLE_PSI_MEMORY 排除性能模式内存instrumentation OFF
DISABLE_PSI_METADATA 排除性能模式元数据instrumentation OFF
DISABLE_PSI_MUTEX 排除性能模式互斥锁instrumentation OFF
DISABLE_PSI_PS 排除性能模式预备语句 OFF
DISABLE_PSI_RWLOCK 排除性能模式读写锁instrumentation OFF
DISABLE_PSI_SOCKET 排除性能模式套接字instrumentation OFF
DISABLE_PSI_SP 排除性能模式存储程序instrumentation OFF
DISABLE_PSI_STAGE 排除性能模式阶段instrumentation OFF
DISABLE_PSI_STATEMENT 排除性能模式语句instrumentation OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能模式语句摘要instrumentation OFF
DISABLE_PSI_TABLE 排除性能模式表instrumentation OFF
DISABLE_PSI_THREAD 排除性能模式线程instrumentation OFF
DISABLE_PSI_TRANSACTION 排除性能模式事务instrumentation OFF
ENABLED_LOCAL_INFILE 是否启用 LOCAL for LOAD DATA OFF
ENABLED_PROFILING 是否启用查询 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 是否生成 profile 指导优化数据 OFF
FPROFILE_USE 是否使用 profile 指导优化数据 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_MYSQLKEYRINGDIR keyring_file 插件数据文件目录 平台特定
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 是否优化 sanitizer 构建 ON
REPRODUCIBLE_BUILD 采取额外的措施来创建一个独立于构建位置和时间的构建结果
SHOW_SUPPRESSED_COMPILER_WARNING 是否显示压制的编译器警告并且不使用 -Werror。 OFF
SYSCONFDIR 选项文件目录
SYSTEMD_PID_DIR systemd 下的 PID 文件目录 /var/run/mysqld
SYSTEMD_SERVICE_NAME MySQL 服务名称 under systemd mysqld
TMPDIR tmpdir 默认值
WIN_DEBUG_NO_INLINE 是否禁用函数内联 OFF
WITHOUT_SERVER 不要构建服务器 OFF
WITHOUT_xxx_STORAGE_ENGINE 从构建中排除存储引擎 xxx
WITH_ANT Ant 的路径用于构建 GCS Java 包装器
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 的 Classpath。默认为空字符串。
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_FIDO FIDO 库支持类型 bundled
WITH_ICU ICU 支持类型 bundled
WITH_INNODB_EXTRA_DEBUG 是否包括 InnoDB 的额外调试支持 OFF
WITH_JEMALLOC 是否链接到 -ljemalloc OFF
WITH_KEYRING_TEST 构建密钥环测试程序 OFF
WITH_LD 是否使用 LLVM lld 或 mold 链接器
WITH_LIBEVENT 使用哪个 libevent 库 bundled
WITH_LIBWRAP 是否包括 libwrap (TCP wrappers) 支持 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 OFF
WITH_NDBAPI_EXAMPLES 构建 API 示例程序 OFF
WITH_NDBCLUSTER 构建 NDB 存储引擎 关闭
WITH_NDBCLUSTER_STORAGE_ENGINE 仅供内部使用;在所有情况下可能不工作如预期;用户应该使用WITH_NDBCLUSTER代替 开启
WITH_NDBMTD 构建多线程数据节点。 开启
WITH_NDB_DEBUG 生成调试版本用于测试或故障排除。 关闭
WITH_NDB_JAVA 启用Java和ClusterJ支持。默认启用,仅在MySQL Cluster中支持。 开启
WITH_NDB_PORT 使用该选项构建的管理服务器的默认端口。如果未使用该选项构建,则管理服务器的默认端口为1186。 [none]
WITH_NDB_TEST 包括NDB API测试程序。 关闭
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 是否构建快速开发周期插件 开启
WITH_RAPIDJSON RapidJSON支持类型 bundled
WITH_ROUTER 是否构建MySQL Router 开启
WITH_SHOW_PARSE_TREE SHOW PARSE_TREE调试语句支持
WITH_SSL SSL支持类型 system
WITH_SYSTEMD 启用systemd支持文件的安装 关闭
WITH_SYSTEMD_DEBUG 启用附加systemd调试信息 关闭
WITH_SYSTEM_LIBS 设置未明确设置的库选项的系统值 关闭
WITH_TCMALLOC 是否链接-ltcalloc 关闭
WITH_TEST_TRACE_PLUGIN 构建测试协议跟踪插件 关闭
WITH_TSAN 启用ThreadSanitizer 关闭
WITH_UBSAN 启用Undefined Behavior Sanitizer 关闭
WITH_UNIT_TESTS 使用单元测试编译MySQL 开启
WITH_UNIXODBC 启用unixODBC支持 关闭
WITH_VALGRIND 是否编译Valgrind头文件 关闭
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以禁用该功能。

    该选项对平台以外的其他平台无效。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否将运行时库与Windows的服务器MSI和Zip包捆绑。

  • -DCMAKE_BUILD_TYPE=type

    要生成的构建类型:

    • RelWithDebInfo:启用优化并生成调试信息。这是默认的MySQL构建类型。

    • Release:启用优化,但省略调试信息以减少构建大小。

    • 调试: 禁用优化和生成调试信息。该构建类型也用于启用 WITH_DEBUG 选项时。那就是说,-DWITH_DEBUG=1 具有与 -DCMAKE_BUILD_TYPE=Debug 相同的效果。

    选项值 NoneMinSizeRel 不受支持。

  • -DCPACK_MONOLITHIC_INSTALL=bool

    该选项影响 make package 操作是否生成多个安装包文件或单个文件。如果禁用,操作生成多个安装包文件,这可能有助于仅安装 MySQL 安装的一部分。如果启用,它生成单个文件以安装所有内容。

  • -DFORCE_INSOURCE_BUILD=bool

    定义是否强制进行源代码内构建。建议使用外部构建,因为它们允许多个构建来自同一个源,并且可以快速清理通过删除构建目录。要强制进行源代码内构建,请使用 CMake with -DFORCE_INSOURCE_BUILD=ON

  • -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 选项。

Note

无法在不支持性能模式的情况下编译。如果想要在不包含特定类型的仪器的情况下编译,可以使用以下 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,那么该存储引擎将作为共享模块构建,或者如果无法作为共享模块构建则排除。

功能选项

编译器标志

要指定您自己的 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"

CMake 选项用于编译 NDB 集群

以下选项用于在编译 MySQL 源代码时启用 NDB 集群支持。