Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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 选项可以在服务器启动时使用 --basedir--port--socket 选项来更改 mysqld 的启动选项。

以下部分提供了关于 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 压缩debug部分的可执行文件 OFF
CPACK_MONOLITHIC_INSTALL 是否生成单个文件 OFF
DEFAULT_CHARSET 默认服务器字符集 utf8mb4
DEFAULT_COLLATION 默认服务器排序规则 utf8mb4_0900_ai_ci
DISABLE_PSI_COND 排除性能Schema条件instrumentation OFF
DISABLE_PSI_DATA_LOCK 排除性能Schema数据锁定instrumentation OFF
DISABLE_PSI_ERROR 排除性能Schema服务器错误instrumentation OFF
DISABLE_PSI_FILE 排除性能Schema文件instrumentation OFF
DISABLE_PSI_IDLE 排除性能Schema空闲instrumentation OFF
DISABLE_PSI_MEMORY 排除性能Schema内存instrumentation OFF
DISABLE_PSI_METADATA 排除性能Schema元数据instrumentation OFF
DISABLE_PSI_MUTEX 排除性能Schema互斥锁instrumentation OFF
DISABLE_PSI_PS 排除性能Schema预准备statement OFF
DISABLE_PSI_RWLOCK 排除性能Schemarwlockinstrumentation OFF
DISABLE_PSI_SOCKET 排除性能Socketsinstrumentation OFF
DISABLE_PSI_SP 排除性能Schema存储程序instrumentation OFF
DISABLE_PSI_STAGE 排除性能Schemastageinstrumentation OFF
DISABLE_PSI_STATEMENT 排除性能Schemastatementinstrumentation OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能Schemastatements_digestinstrumentation OFF
DISABLE_PSI_TABLE 排除性能Schema表instrumentation OFF
DISABLE_PSI_THREAD 排除性能Schema线程instrumentation OFF
DISABLE_PSI_TRANSACTION 排除性能 Schema 交易 Instrumentation OFF
ENABLED_LOCAL_INFILE 是否启用 LOAD DATA 的 LOCAL 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 guided 优化数据 OFF
FPROFILE_USE 是否使用 profile guided 优化数据 OFF
HAVE_PSI_MEMORY_INTERFACE 启用性能 Schema 内存跟踪模块,以跟踪动态存储中的超出对齐类型的内存分配函数 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套接字文件 /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 创建独立于构建位置和时间的build结果
SHOW_SUPPRESSED_COMPILER_WARNING 是否显示隐藏的编译器警告 OFF
SYSCONFDIR 选项文件目录
SYSTEMD_PID_DIR systemd下PID文件目录 /var/run/mysqld
SYSTEMD_SERVICE_NAME MySQL服务名称 mysqld
TMPDIR tmpdir默认值
WIN_DEBUG_NO_INLINE 是否禁用函数内联 OFF
WITHOUT_SERVER 不构建服务器 OFF
WITHOUT_xxx_STORAGE_ENGINE 排除存储引擎xxx
WITH_ANT 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系统上生成唯一的build ID ON
WITH_CLASSPATH Classpath
WITH_CLIENT_PROTOCOL_TRACING 构建客户端协议跟踪框架 ON
WITH_CURL curl库位置
WITH_DEBUG 是否包括调试支持 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用默认编译器选项 ON
WITH_DEVELOPER_ENTITLEMENTS 在macOS上添加'get-task-allow'特权以生成core dump OFF
WITH_EDITLINE libedit/editline库类型 bundled
WITH_ERROR_INSERT 启用NDB存储引擎错误注入。不要在生产环境中使用。 OFF
WITH_ICU ICU支持类型 bundled
WITH_INNODB_EXTRA_DEBUG 是否包括InnoDB额外调试支持 OFF
WITH_JEMALLOC 是否链接到-jemalloc OFF
WITH_LD 是否使用LLVM lld或mold链接器
WITH_LIBEVENT 哪种libevent库 bundled
WITH_LIBWRAP 是否包括libwrap(TCP包装)支持 OFF
WITH_LOCK_ORDER 是否启用LOCK_ORDER工具 OFF
WITH_LSAN 是否运行LeakSanitizer,without 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集群 OFF
WITH_NDBAPI_EXAMPLES 编译API示例程序 OFF
WITH_NDBCLUSTER 编译NDB存储引擎 OFF
WITH_NDBCLUSTER_STORAGE_ENGINE 内部使用;可能在所有情况下都不工作;用户应该使用WITH_NDBCLUSTER ON
WITH_NDBMTD 编译多线程数据节点 ON
WITH_NDB_DEBUG 生成调试版本以供测试或调试 OFF
WITH_NDB_JAVA 启用Java和ClusterJ支持。默认启用。仅支持MySQL集群。 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 是否链接到-jemalloc 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,用于 build_id 系统变量的值,并在 MySQL 服务器启动时将其写入日志。将该选项设置为 OFF以禁用该功能。

    该选项对其他平台无效。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否将 runtime 库与 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

    强制在源文件夹中进行编译。出处编译是推荐的,因为它允许从同一个源文件夹中进行多次编译,并且可以快速清理build目录。要强制在源文件夹中编译,请使用CMake命令并指定-DFORCE_INSOURCE_BUILD=ON

  • -DFORCE_COLORED_OUTPUT=bool

    控制编译器在命令行上是否启用颜色输出,适用于gccclang。默认情况下设置为OFF

CMAKE_INSTALL_PREFIX选项指定了基本安装目录。以INSTALL_开头的选项,用于指定组件位置,这些选项将相对于prefix的相对路径。它们的值不应该包含prefix。

存储引擎是插件。您可以将插件编译为静态模块(编译到服务器中)或动态模块(编译为动态库,然后使用INSTALL PLUGIN语句或--plugin-load选项在服务器中安装)才能使用。某些插件可能不支持静态或动态编译。

InnoDB、MyISAM、MERGE、MEMORY和CSV引擎是强制性的(总是编译到服务器中),无需显式安装。

要将存储引擎静态编译到服务器中,使用-DWITH_engine_STORAGE_ENGINE=1。一些可允许的engine值是ARCHIVEBLACKHOLEEXAMPLEFEDERATED。示例:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

要在MySQL中支持NDB集群,使用WITH_NDB选项。

Note

不可能编译不包含性能Schema支持。如果想要编译不包含特定的类型的instrumentation,可以使用以下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

例如,要编译不包含互斥锁instrumentation,使用-DDISABLE_PSI_MUTEX=1

要排除存储引擎从编译中,使用-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_FLAGSCMake 选项。

在提供自己的编译器标志时,您可能想要指定CMAKE_BUILD_TYPE

例如,要创建 32 位的发布构建在 64 位 Linux 机器上,做法如下:

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

如果您设置了影响优化的标志(-Onumber),您必须设置CMAKE_C_FLAGS_build_type和/or 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"

以下选项用于在 MySQL 源代码中使用 NDB 集群支持时。