2.9.7 MySQL 源配置选项
CMake 程序对如何配置 MySQL 源分发提供了很多控制。通常,您可以使用 CMake 命令行上的选项来执行此操作。有关 CMake 支持的选项的信息,请在顶级源目录中运行以下命令之一:
cmake . -LH
ccmake .
您还可以使用某些环境变量来影响 CMake。参见第 4.9 节“环境变量”。
对于布尔选项,可以将值指定为 1 或ON
以启用该选项,或者将其指定为 0 或OFF
以禁用该选项。
许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,可以在服务器启动时使用mysqld的--basedir,--port和--socket选项来更改配置默认安装基本目录位置,TCP/IP 端口号和 Unix 套接字文件的CMAKE_INSTALL_PREFIX,MYSQL_TCP_PORT和MYSQL_UNIX_ADDR选项。如果适用,配置选项描述将指示相应的mysqld启动选项。
以下各节提供有关 CMake 选项的更多信息。
CMake 选项参考
下 table 显示了可用的 CMake 选项。在Default
列中,PREFIX
table 示CMAKE_INSTALL_PREFIX选项的值,该选项指定安装基础目录。此值用作几个安装子目录的父位置。
table2.13 MySQL 源配置选项参考(CMake)
Formats | Description | Default | Introduced |
---|---|---|---|
BUILD_CONFIG | 使用与正式版本相同的构建选项 | ||
CMAKE_BUILD_TYPE | 要生产的构建类型 | RelWithDebInfo | |
CMAKE_CXX_FLAGS | C 编译器的标志 | ||
CMAKE_C_FLAGS | C 编译器的标志 | ||
CMAKE_INSTALL_PREFIX | 安装基础目录 | /usr/local/mysql | |
COMPILATION_COMMENT | 关于编译环境的 Comment | ||
CPACK_MONOLITHIC_INSTALL | 软件包构建是否生成单个文件 | OFF | |
DEFAULT_CHARSET | 默认服务器字符集 | latin1 | |
DEFAULT_COLLATION | 默认服务器排序规则 | latin1_swedish_ci | |
DISABLE_PSI_COND | 排除性能模式条件检测 | 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 | 排除性能模式 rwlock 工具 | OFF | |
DISABLE_PSI_SOCKET | 排除性能架构套接字工具 | OFF | |
DISABLE_PSI_SP | 排除性能模式存储程序检测 | OFF | |
DISABLE_PSI_STAGE | 排除性能模式阶段检测 | OFF | |
DISABLE_PSI_STATEMENT | 排除性能模式语句检测 | OFF | |
DISABLE_PSI_STATEMENT_DIGEST | 排除性能模式语句摘要工具 | OFF | |
DISABLE_PSI_TABLE | 排除性能模式 table 检测 | OFF | |
DISABLE_PSI_THREAD | 排除性能架构线程检测 | OFF | |
DISABLE_PSI_TRANSACTION | 排除性能架构事务检测 | OFF | |
DOWNLOAD_BOOST | 是否下载 Boost 库 | OFF | |
DOWNLOAD_BOOST_TIMEOUT | 下载 Boost 库的超时时间(以秒为单位) | 600 | |
ENABLED_LOCAL_INFILE | 是否为加载数据启用本地 | OFF | |
ENABLED_PROFILING | 是否启用查询分析代码 | ON | |
ENABLE_DOWNLOADS | 是否下载可选文件 | OFF | |
ENABLE_DTRACE | 是否包括 DTrace 支持 | ||
ENABLE_GCOV | 是否包括 gcov 支持 | ||
ENABLE_GPROF | 启用 gprof(仅限优化的 Linux 构建) | OFF | |
FORCE_UNSUPPORTED_COMPILER | 是否允许不支持的编译器 | OFF | |
IGNORE_AIO_CHECK | 使用-DBUILD_CONFIG = mysql_release 时,忽略 libaio 检查 | OFF | |
INSTALL_BINDIR | 用户可执行文件目录 | PREFIX/bin | |
INSTALL_DOCDIR | Documentation directory | PREFIX/docs | |
INSTALL_DOCREADMEDIR | 自述文件目录 | PREFIX | |
INSTALL_INCLUDEDIR | 头文件目录 | PREFIX/include | |
INSTALL_INFODIR | 信息文件目录 | PREFIX/docs | |
INSTALL_LAYOUT | 选择 sched 义的安装布局 | STANDALONE | |
INSTALL_LIBDIR | 库文件目录 | PREFIX/lib | |
INSTALL_MANDIR | 手册页目录 | PREFIX/man | |
INSTALL_MYSQLKEYRINGDIR | keyring_file 插件数据文件的目录 | platform specific | 5.7.11 |
INSTALL_MYSQLSHAREDIR | 共享数据目录 | PREFIX/share | |
INSTALL_MYSQLTESTDIR | mysql-test directory | PREFIX/mysql-test | |
INSTALL_PKGCONFIGDIR | mysqlclient.pc pkg-config 文件的目录 | INSTALL_LIBDIR/pkgconfig | |
INSTALL_PLUGINDIR | Plugin directory | PREFIX/lib/plugin | |
INSTALL_SBINDIR | 服务器可执行目录 | PREFIX/bin | |
INSTALL_SCRIPTDIR | Scripts directory | PREFIX/scripts | |
INSTALL_SECURE_FILE_PRIVDIR | secure_file_priv 默认值 | platform specific | |
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR | secure_file_priv libmysqld 的默认值 | ||
INSTALL_SHAREDIR | aclocal/mysql.m4 安装目录 | PREFIX/share | |
INSTALL_SUPPORTFILESDIR | 额外的支持文件目录 | PREFIX/support-files | |
MAX_INDEXES | 每张 table 的最大索引 | 64 | |
MUTEX_TYPE | InnoDB 互斥锁类型 | event | |
MYSQLX_TCP_PORT | X 插件使用的 TCP/IP 端口号 | 33060 | 5.7.17 |
MYSQLX_UNIX_ADDR | X 插件使用的 Unix 套接字文件 | /tmp/mysqlx.sock | 5.7.15 |
MYSQL_DATADIR | Data directory | ||
MYSQL_MAINTAINER_MODE | 是否启用特定于 MySQL 维护人员的开发环境 | OFF | |
MYSQL_PROJECT_NAME | Windows/OS X 项目名称 | MySQL | |
MYSQL_TCP_PORT | TCP/IP 端口号 | 3306 | |
MYSQL_UNIX_ADDR | Unix 套接字文件 | /tmp/mysql.sock | |
ODBC_INCLUDES | ODBC 包含目录 | ||
ODBC_LIB_DIR | ODBC 库目录 | ||
OPTIMIZER_TRACE | 是否支持优化器跟踪 | ||
REPRODUCIBLE_BUILD | 格外小心,以独立于构建位置和时间来创建构建结果 | 5.7.19 | |
SUNPRO_CXX_LIBRARY | Solaris 10 上的 Client 端链接库 | ||
SYSCONFDIR | 选项文件目录 | ||
SYSTEMD_PID_DIR | systemd 下 PID 文件的目录 | /var/run/mysqld | |
SYSTEMD_SERVICE_NAME | systemd 下的 MySQL 服务名称 | mysqld | |
TMPDIR | tmpdir 默认值 | ||
WIN_DEBUG_NO_INLINE | 是否禁用功能内联 | OFF | |
WITHOUT_xxx_STORAGE_ENGINE | 从构建中排除存储引擎 xxx | ||
WITH_ASAN | Enable AddressSanitizer | OFF | |
WITH_ASAN_SCOPE | 启用 AddressSanitizer -fsanitize-scope-use-scope 范围 Clang 标志 | OFF | 5.7.21 |
WITH_AUTHENTICATION_LDAP | 如果无法构建 LDAP 认证插件,是否报告错误 | OFF | 5.7.19 |
WITH_AUTHENTICATION_PAM | 构建 PAM 身份验证插件 | OFF | |
WITH_AWS_SDK | Amazon Web Services 软件开发套件的位置 | 5.7.19 | |
WITH_BOOST | Boost 库源代码的位置 | ||
WITH_CLIENT_PROTOCOL_TRACING | 构建 Client 端协议跟踪框架 | ON | |
WITH_CURL | curl 库的位置 | 5.7.19 | |
WITH_DEBUG | 是否包括调试支持 | OFF | |
WITH_DEFAULT_COMPILER_OPTIONS | 是否使用默认的编译器选项 | ON | |
WITH_DEFAULT_FEATURE_SET | 是否使用默认功能集 | ON | |
WITH_EDITLINE | 使用哪个 libedit/editline 库 | bundled | |
WITH_EMBEDDED_SERVER | 是否构建嵌入式服务器 | OFF | |
WITH_EMBEDDED_SHARED_LIBRARY | 是否构建共享的嵌入式服务器库 | OFF | |
WITH_EXTRA_CHARSETS | 包括哪些额外的字符集 | all | |
WITH_GMOCK | googlemock 分发路径 | ||
WITH_INNODB_EXTRA_DEBUG | 是否包括对 InnoDB 的额外调试支持。 | OFF | |
WITH_INNODB_MEMCACHED | 是否生成 memcached 共享库。 | OFF | |
WITH_KEYRING_TEST | 构建密钥环测试程序 | OFF | 5.7.11 |
WITH_LDAP | 仅供内部使用 | 5.7.29 | |
WITH_LIBEVENT | 使用哪个 libevent 库 | bundled | |
WITH_LIBWRAP | 是否包括 libwrap(TCP 包装器)支持 | OFF | |
WITH_LZ4 | LZ4 库支持的类型 | bundled | 5.7.14 |
WITH_MECAB | Compiles MeCab | ||
WITH_MSAN | Enable MemorySanitizer | OFF | |
WITH_MSCRT_DEBUG | 启用 Visual Studio CRT 内存泄漏跟踪 | OFF | |
WITH_NDBCLUSTER | 构建 NDB 存储引擎; WITH_NDBCLUSTER_STORAGE_ENGINE 的别名 | ON | |
WITH_NDBCLUSTER_STORAGE_ENGINE | 构建 NDB 存储引擎 | ON | |
WITH_NDB_TEST | 包括 NDB API 测试程序。 | OFF | |
WITH_NUMA | 设置 NUMA 内存分配策略 | 5.7.17 | |
WITH_PROTOBUF | 使用哪个协议缓冲区包 | bundled | 5.7.12 |
WITH_RAPID | 是否构建快速开发周期插件 | ON | 5.7.12 |
WITH_SASL | 仅供内部使用 | 5.7.29 | |
WITH_SSL | SSL 支持类型 | system | |
WITH_SYSTEMD | 启用系统支持文件的安装 | OFF | |
WITH_TEST_TRACE_PLUGIN | 构建测试协议跟踪插件 | OFF | |
WITH_UBSAN | 启用未定义的行为清理器 | OFF | |
WITH_UNIT_TESTS | 用单元测试编译 MySQL | ON | |
WITH_UNIXODBC | 启用 unixODBC 支持 | OFF | |
WITH_VALGRIND | 是否在 Valgrind 头文件中编译 | OFF | |
WITH_ZLIB | zlib 支持的类型 | bundled | |
WITH_xxx_STORAGE_ENGINE | 将存储引擎 xxx 静态编译到服务器中 |
General Options
此选项使用与 Oracle 相同的构建选项来配置源分发,Oracle 使用这些生成选项来为 MySQL 官方发行版生成二进制分发。
要生成的构建类型:
-
RelWithDebInfo
:启用优化并生成调试信息。这是默认的 MySQL 构建类型。Debug
:禁用优化并生成调试信息。如果启用了WITH_DEBUG选项,则也使用此构建类型。也就是说,-DWITH_DEBUG=1与-DCMAKE_BUILD_TYPE=Debug具有相同的效果。
此选项影响 make package 操作产生多个安装软件包文件还是单个文件。如果禁用,该操作将产生多个安装包文件,如果您只想安装完整 MySQL 安装的一部分,则可能很有用。如果启用,它将生成一个用于安装所有内容的文件。
安装布局选项
CMAKE_INSTALL_PREFIX选项指示基本安装目录。名称形式为INSTALL_xxx
的其他 table 示组件位置的选项是相对于前缀解释的,并且它们的值是相对路径名。它们的值不应包含前缀。
安装基础目录。
可以在服务器启动时使用--basedir选项设置此值。
在哪里安装用户程序。
在哪里安装文档。
哪里安装README
个文件。
在哪里安装头文件。
在哪里安装信息文件。
选择 sched 义的安装布局:
-
STANDALONE
:布局与.tar.gz
和.zip
软件包相同。这是默认值。-
RPM
:布局类似于 RPM 软件包。 -
SVR4
:Solaris 软件包布局。 -
DEB
:DEB 程序包布局(实验)。
-
您可以选择 sched 义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如:
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
INSTALL_LAYOUT值确定secure_file_priv,keyring_encrypted_file_data和keyring_file_data系统变量的默认值。请参见第 5.1.7 节“服务器系统变量”和第 6.4.4.11 节,“密钥环系统变量”中对这些变量的描述。
在哪里安装库文件。
在哪里安装手册页。
用作keyring_file
插件数据文件位置的默认目录。默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake 选项的值。请参见第 5.1.7 节“服务器系统变量”中对keyring_file_data系统变量的描述。
这个选项是在 MySQL 5.7.11 中添加的。
在哪里安装共享数据文件。
mysql-test
目录的安装位置。要禁止安装此目录,请将选项显式设置为空值(-DINSTALL_MYSQLTESTDIR=)。
mysqlclient.pc
文件的安装目录,以供 pkg-config 使用。除非INSTALL_LIBDIR以/mysql
结尾,否则默认值为INSTALL_LIBDIR/pkgconfig
,在这种情况下,将首先删除该值。
插件目录的位置。
可以在服务器启动时使用--plugin_dir选项设置此值。
mysqld服务器的安装位置。
哪里安装mysql_install_db。
secure_file_priv系统变量的默认值。默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake 选项的值;默认值为 0.请参见第 5.1.7 节“服务器系统变量”中对secure_file_priv系统变量的描述。
要设置libmysqld
嵌入式服务器的值,请使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR。
libmysqld
嵌入式服务器的secure_file_priv系统变量的默认值。
Note
从 MySQL 5.7.19 开始不推荐使用libmysqld
嵌入式服务器库,并将在 MySQL 8.0 中将其删除。
哪里安装aclocal/mysql.m4
。
在哪里安装其他支持文件。
MySQL 数据目录的位置。
可以在服务器启动时使用--datadir选项设置此值。
ODBC 的位置包括目录,并且可以在配置连接器/ ODBC 时使用。
ODBC 库目录的位置,可在配置连接器/ ODBC 时使用。
默认的my.cnf
选项文件目录。
无法在服务器启动时设置此位置,但是可以使用--defaults-file=file_name选项使用给定的选项文件启动服务器,其中* file_name
*是文件的完整路径名。
当 MySQL 由 systemdManagement 时,在其中创建 PID 文件的目录的名称。默认值为/var/run/mysqld
;可能会根据INSTALL_LAYOUT值隐式更改它。
除非启用了WITH_SYSTEMD,否则将忽略此选项。
MySQL 由 systemdManagement 时使用的 MySQL 服务的名称。默认值为mysqld
;可能会根据INSTALL_LAYOUT值隐式更改它。
除非启用了WITH_SYSTEMD,否则将忽略此选项。
tmpdir系统变量使用的默认位置。如果未指定,则默认值为<stdio.h>
中的P_tmpdir
。
存储引擎选项
存储引擎是作为插件构建的。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用INSTALL PLUGIN语句或--plugin-load选项安装到服务器中,然后才能使用)。有些插件可能不支持静态或动态构建。
InnoDB,MyISAM,MERGE,MEMORY和CSV引擎是强制性的(始终编译到服务器中),无需明确安装。
要将存储引擎静态编译到服务器中,请使用-DWITH_engine_STORAGE_ENGINE=1
。一些允许的engine
值是ARCHIVE
,BLACKHOLE
,EXAMPLE
,FEDERATED
,NDB
或NDBCLUSTER
(NDB)和PARTITION
(分区支持)。例子:
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
Note
仅当使用 NDB Cluster 源构建 NDB Cluster 时,才支持WITH_NDBCLUSTER_STORAGE_ENGINE。它不能用于在其他 MySQL 源树或发行版中启用集群支持。在 NDB 群集源分发中,默认情况下启用它。有关更多信息,请参见第 21.2.3.4 节“在 Linux 上从源代码构建 NDB 集群”和第 21.2.4.2 节“在 Windows 上从源代码编译和安装 NDB 群集”。
Note
如果没有 Performance Schema 支持,则无法进行编译。如果希望不使用特定类型的工具进行编译,则可以使用以下 CMake 选项来完成:
DISABLE_PSI_COND
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_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
-DWITH_PARTITION_STORAGE_ENGINE=0
也可以使用-DWITHOUT_engine_STORAGE_ENGINE=1
从构建中排除存储引擎(但最好使用-DWITH_engine_STORAGE_ENGINE=0
)。例子:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如果没有为给定的存储引擎指定-DWITH_engine_STORAGE_ENGINE
和-DWITHOUT_engine_STORAGE_ENGINE
,则该引擎将被构建为共享模块,如果无法将其构建为共享模块,则将其排除。
Feature Options
关于编译环境的描述性 Comment。
服务器字符集。默认情况下,MySQL 使用latin1
(cp1252 西欧)字符集。
charset_name
*可以是binary
,armscii8
,ascii
,big5
,cp1250
,cp1251
,cp1256
,cp1257
,cp850
,cp852
,cp866
,cp932
,dec8
,eucjpms
,euckr
,gb2312
,gbk
,_21,hebrew
,koi8r
,koi8u
,latin1
,latin2
,latin5
,latin7
,macce
,macroman
,sjis
,swe7
,tis620
,ucs2
,ujis
,utf8
,utf8mb4
,utf16
,utf16le
,utf32
。cmake/character_sets.cmake
文件中列出了允许的字符集,作为CHARSETS_AVAILABLE
的值。
可以在服务器启动时使用--character_set_server选项设置此值。
服务器排序规则。默认情况下,MySQL 使用latin1_swedish_ci
。使用SHOW COLLATION语句确定每个字符集可使用哪些排序规则。
可以在服务器启动时使用--collation_server选项设置此值。
是否排除性能模式条件检测。默认值为OFF
(包括)。
是否排除性能模式文件检测。默认值为OFF
(包括)。
是否排除性能模式空闲检测。默认值为OFF
(包括)。
是否排除性能架构内存检测。默认值为OFF
(包括)。
是否排除性能模式元数据检测。默认值为OFF
(包括)。
是否排除性能架构互斥检测。默认值为OFF
(包括)。
是否排除性能模式 rwlock 工具。默认值为OFF
(包括)。
是否排除性能架构套接字工具。默认值为OFF
(包括)。
是否排除性能模式存储程序工具。默认值为OFF
(包括)。
是否排除性能模式阶段检测。默认值为OFF
(包括)。
是否排除性能模式语句工具。默认值为OFF
(包括)。
是否排除性能模式 statement_digest 工具。默认值为OFF
(包括)。
是否排除性能模式 table 工具。默认值为OFF
(包括)。
排除性能模式准备好的语句实例检测。默认值为OFF
(包括)。
排除性能架构线程检测。默认值为OFF
(包括)。
仅在构建时不使用任何工具时才禁用线程,因为其他工具对线程有依赖性。
排除性能架构事务检测。默认值为OFF
(包括)。
是否下载 Boost 库。默认值为OFF
。
有关使用 Boost 的其他讨论,请参见WITH_BOOST选项。
下载 Boost 库的超时时间(以秒为单位)。默认值为 600 秒。
有关使用 Boost 的其他讨论,请参见WITH_BOOST选项。
是否下载可选文件。例如,启用此选项后, CMake 将下载测试套件用于运行单元测试的 Google 测试发行版。
是否包括对 DTrace 探针的支持。有关 DTrace 的信息,请第 5.8 节“使用 DTrace 跟踪 mysqld”
不建议使用此选项,因为在 MySQL 5.7 中已弃用了对 DTrace 的支持,而在 MySQL 8.0 中已删除了对 DTrace 的支持。
是否包括 gcov 支持(仅 Linux)。
是否启用gprof
(仅优化的 Linux 构建)。
此选项控制 MySQLClient 端库的内置默认LOCAL
功能。因此,没有明确安排的 Client 端将根据 MySQL 构建时指定的ENABLED_LOCAL_INFILE设置禁用或启用LOCAL
功能。
默认情况下,MySQL 二进制发行版中的 Client 端库在启用ENABLED_LOCAL_INFILE的情况下进行编译。如果从源代码编译 MySQL,请根据未进行显式安排的 Client 端应分别禁用还是启用LOCAL
功能,将ENABLED_LOCAL_INFILE禁用或启用。
ENABLED_LOCAL_INFILE控制 Client 端LOCAL
功能的默认设置。对于服务器,local_infile系统变量控制服务器端LOCAL
的功能。要明确导致服务器拒绝或允许本地加载数据语句(无论在构建时或运行时如何配置 Client 端程序和库),请分别在local_infile禁用或启用的情况下启动mysqld。 local_infile也可以在运行时设置。参见第 6.1.6 节“ LOAD DATA LOCAL 的安全注意事项”。
是否启用查询配置代码(针对SHOW PROFILE和SHOW PROFILES语句)。
默认情况下, CMake 检查受支持的编译器的最低版本:Visual Studio 2013(Windows); GCC 4.4 或 Clang 3.3(Linux); Developer Studio 12.5(Solaris 服务器); Developer Studio 12.2 或 GCC 4.4(SolarisClient 端库); Clang 3.3(macOS),Clang 3.3(FreeBSD)。要禁用此检查,请使用-DFORCE_UNSUPPORTED_COMPILER=ON。
如果在 Linux 上提供了-DBUILD_CONFIG=mysql_release选项,则默认情况下必须链接libaio
库。如果您没有libaio
或不想安装它,可以通过指定-DIGNORE_AIO_CHECK=1来取消对它的检查。
每个 table 的最大索引数。默认值为 64.最大值为 255.小于 64 的值将被忽略,并使用默认值 64.
是否启用特定于 MySQL 维护人员的开发环境。如果启用,此选项将导致编译器警告变为错误。
InnoDB
使用的互斥锁类型。选项包括:
-
event
:使用事件互斥锁。这是默认值,也是原始的InnoDB
互斥量实现。-
sys
:在 UNIX 系统上使用 POSIX 互斥锁。在 Windows 上使用CRITICAL_SECTION
主题(如果有)。 -
futex
:使用 Linux futexes 代替条件变量来调度 await 线程。
-
X 插件侦听 TCP/IP 连接的端口号。默认值为 33060.
可以在服务器启动时使用mysqlx_port系统变量设置此值。
服务器在其上侦听 X 插件套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为/tmp/mysqlx.sock
。
可以在服务器启动时使用mysqlx_port系统变量设置此值。
对于 Windows 或 macOS,将项目名称合并到项目文件名中。
服务器在其上侦听 TCP/IP 连接的端口号。默认值为 3306.
可以在服务器启动时使用--port选项设置此值。
服务器在其上侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为/tmp/mysql.sock
。
可以在服务器启动时使用--socket选项设置此值。
是否支持优化器跟踪。参见MySQL 内部:跟踪优化器。
对于 Linux 系统上的构建,此选项控制是否要特别注意创建与构建位置和时间无关的构建结果。
MySQL 5.7.19 中添加了此选项。
是否在 Windows 上禁用功能内联。默认为关闭(启用内联)。
是否为支持它的编译器启用 AddressSanitizer。默认为关闭。
是否启用用于范围后使用检测的 AddressSanitizer -fsanitize-address-use-after-scope
Clang 标志。默认为关闭。要使用此选项,还必须启用-DWITH_ASAN
。
如果无法构建 LDAP 认证插件,是否报告错误:
-
如果禁用此选项(默认设置),则在找到所需的头文件和库的情况下将构建 LDAP 插件。如果不是, CMake 将显示一条 Comments。
- 如果启用此选项,则找不到所需的头文件和库会导致 CMake 产生错误,从而无法构建服务器。
有关 LDAP 身份验证的信息,请参阅第 6.4.1.9 节“ LDAP 可插拔身份验证”。 MySQL 5.7.19 中添加了此选项。
是否为包含此插件的源树构建 PAM 身份验证插件。 (请参阅第 6.4.1.7 节“ PAM 可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建将失败。
Amazon Web Services 软件开发套件的位置。
MySQL 5.7.19 中添加了此选项。
Boost 库是构建 MySQL 所必需的。这些 CMake 选项可控制库源位置以及是否自动下载:
- -DWITH_BOOST=path_name指定 Boost 库目录位置。也可以通过设置
BOOST_ROOT
或WITH_BOOST
环境变量来指定 Boost 位置。
从 MySQL 5.7.11 开始,允许-DWITH_BOOST=system,并指示在标准位置的编译主机上安装了正确版本的 Boost。在这种情况下,将使用已安装的 Boost 版本,而不是 MySQL 源代码发行版随附的任何版本。
-
-DDOWNLOAD_BOOST=bool指定是否在指定位置不存在 Boost 源的情况下下载。默认值为
OFF
。 -
-DDOWNLOAD_BOOST_TIMEOUT=seconds下载 Boost 库的超时时间(以秒为单位)。默认值为 600 秒。
例如,如果您通常构建 MySQL 并将对象输出放置在 MySQL 源树的bld
子目录中,则可以使用 Boost 进行构建,如下所示:
mkdir bld
cd bld
cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
这将使 Boost 下载到主目录下的my_boost
目录中。如果所需的 Boost 版本已经存在,则无需下载。如果所需的 Boost 版本更改,则下载较新的版本。
如果已经在本地安装了 Boost,并且编译器自己找到了 Boost 头文件,则可能不必指定前面的 CMake 选项。但是,如果 MySQL 所需的 Boost 版本有所更改,而本地安装的版本尚未升级,则可能会出现构建问题。使用 CMake 选项应该可以成功构建。
使用上述允许 Boost 下载到指定位置的设置,当所需的 Boost 版本更改时,您需要删除bld
文件夹,重新创建它,然后再次执行 cmake 步骤。否则,可能不会下载新的 Boost 版本,并且编译可能会失败。
是否将 Client 端协议跟踪框架构建到 Client 端库中。默认情况下,启用此选项。
有关编写协议跟踪 Client 端插件的信息,请参见第 28.2.4.11 节,“编写协议跟踪插件”。
另请参见WITH_TEST_TRACE_PLUGIN选项。
curl 库的位置。 * curl_type
*可以是system
(使用系统 curl 库)或 curl 库的路径名。
MySQL 5.7.19 中添加了此选项。
是否包括调试支持。
通过调试支持配置 MySQL,可以在启动服务器时使用--debug="d,parser_debug"选项。这将导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出将写入错误日志。
UNIV_DEBUG
下定义了针对InnoDB
存储引擎的同步调试检查,并且在使用WITH_DEBUG选项编译调试支持时可用。编译调试支持后,可以使用innodb_sync_debug配置选项启用或禁用InnoDB
同步调试检查。
从 MySQL 5.7.18 开始,启用WITH_DEBUG也将启用 Debug Sync。有关“调试同步”功能以及如何使用同步点的说明,请参见MySQL 内部:测试同步。
是否使用cmake/build_configurations/feature_set.cmake
中的标志。
要使用哪个libedit
/editline
库。允许的值为bundled
(默认值)和system
。
WITH_EDITLINE替换了已删除的WITH_LIBEDIT
。
是否构建libmysqld
嵌入式服务器库。
Note
从 MySQL 5.7.17 开始不推荐使用libmysqld
嵌入式服务器库,并且已在 MySQL 8.0 中将其删除。
是否构建共享的libmysqld
嵌入式服务器库。
Note
从 MySQL 5.7.17 开始不推荐使用libmysqld
嵌入式服务器库,并且已在 MySQL 8.0 中将其删除。
要包括的额外字符集:
是否包括额外的 InnoDB 调试支持。
启用WITH_INNODB_EXTRA_DEBUG
将打开额外的 InnoDB 调试检查。仅当启用WITH_DEBUG时,才能启用此选项。
googlemock 发行版的路径,用于基于 Google Test 的单元测试。该选项值是分发 Zip 文件的路径。或者,将WITH_GMOCK
环境变量设置为路径名。也可以使用-DENABLE_DOWNLOADS=1
和 CMake 从 GitHub 下载发行版。
如果您构建的 MySQL 没有基于 Google 测试的单元测试(通过配置 wihout WITH_GMOCK),则 CMake 会显示一条消息,指示如何下载它。
是否生成 memcached 共享库(libmemcached.so
和innodb_engine.so
)。
是否构建keyring_file
插件随附的测试程序。默认值为OFF
。测试文件的源代码位于plugin/keyring/keyring-test
目录中。
这个选项是在 MySQL 5.7.11 中添加的。
仅供内部使用。 MySQL 5.7.29 中添加了此选项。
要使用哪个libevent
库。允许的值为bundled
(默认值),system
和yes
。如果指定system
或yes
,则使用系统libevent
库(如果存在)。如果找不到系统库,则使用 Binding 的libevent
库。 InnoDB
memcached 需要libevent
库。
是否包括libwrap
(TCP 包装器)支持。
WITH_LZ4table 示zlib
支持的来源:
-
bundled
:使用与发行版 Binding 在一起的LZ4
库。这是默认值。system
:使用系统LZ4
库。如果WITH_LZ4设置为该值,则不会构建lz4_decompressUtil。在这种情况下,可以改用 system lz4 命令。
是否为支持它的编译器启用 MemorySanitizer。默认为关闭。
为了使此选项生效(如果启用),还必须在启用该选项的情况下编译所有链接到 MySQL 的库。
使用此选项编译 MeCab 解析器。如果已将 MeCab 安装到其默认安装目录,请设置-DWITH_MECAB=system
。 system
选项适用于使用本机软件包 ManagementUtil 从源或二进制文件执行的 MeCab 安装。如果已将 MeCab 安装到自定义安装目录,请指定 MeCab 安装的路径。例如-DWITH_MECAB=/opt/mecab
。如果system
选项不起作用,则在所有情况下都应指定 MeCab 安装路径。
有关相关信息,请参见第 12.9.9 节“ MeCab 全文分析器插件”。
是否启用 Visual Studio CRT 内存泄漏跟踪。默认值为OFF
。
明确设置 NUMA 内存分配策略。 CMake 根据当前平台是否支持NUMA
来设置默认的WITH_NUMA值。对于不支持 NUMA 的平台, CMake 的行为如下:
-
如果没有 NUMA 选项(正常情况), CMake 将 continue 正常运行,仅产生以下警告:缺少 NUMA 库或所需的版本不可用
- 使用-DWITH_NUMA=ON时, CMake 会因以下错误而中止:缺少 NUMA 库或所需的版本不可用
MySQL 5.7.17 中添加了此选项。
使用哪个协议缓冲区包。 * protobuf_type
*可以是以下值之一:
-
bundled
:使用与发行版 Binding 在一起的软件包。这是默认值。system
:使用系统上安装的软件包。
其他值将被忽略,并回退到bundled
。
MySQL 5.7.12 中添加了此选项。
是否构建快速开发周期的插件。启用后,将在包含这些插件的构建树中创建一个rapid
目录。禁用后,不会在构建树中创建rapid
目录。默认值为ON
,除非从源树中删除了rapid
目录,在这种情况下默认值为OFF
。 MySQL 5.7.12 中添加了此选项。
仅供内部使用。 MySQL 5.7.29 中添加了此选项。
为了支持加密连接,用于生成随机数的熵以及其他与加密相关的操作,必须使用 SSL 库来构建 MySQL。此选项指定要使用的 SSL 库。
-
ssl_type
*可以是以下值之一:
-
yes
:使用系统 OpenSSL 库(如果存在),否则使用与发行版 Binding 在一起的库。-
bundled
:使用与发行版 Binding 在一起的 SSL 库。这是 MySQL 5.7.28 之前的默认设置。从 5.7.28 开始,该值不再是允许的值,默认值为system
。 -
system
:使用系统 OpenSSL 库。自 MySQL 5.7.28 起,这是默认设置。 -
path_name
是要使用的 OpenSSL 安装的路径名。这可能比使用system
的ssl_type
值更可取,因为它可以阻止 CMake 检测和使用系统上安装的较旧或错误的 OpenSSL 版本。 (另一种允许执行相同操作的方法是将WITH_SSL
设置为system
并将CMAKE_PREFIX_PATH
选项设置为path_name
*.)
-
有关配置 SSL 库的其他信息,请参见第 2.9.6 节“配置 SSL 库支持”。
是否启用安装 systemd 支持文件。默认情况下,此选项处于禁用状态。启用后,将安装 systemd 支持文件,并且不会安装诸如mysqld_safe和 System V 初始化脚本之类的脚本。在 systemd 不可用的平台上,启用WITH_SYSTEMD会导致 CMake 错误。
有关使用 systemd 的更多信息,请参见第 2.5.10 节“使用 systemdManagementMySQL 服务器”。该部分还包括有关指定先前在[mysqld_safe]
选项组中指定的选项的信息。因为使用 systemd 时未安装mysqld_safe,所以必须以其他方式指定此类选项。
是否构建测试协议跟踪 Client 端插件(请参见第 28.2.4.11.1 节,“使用测试协议跟踪插件”)。默认情况下,此选项处于禁用状态。除非启用WITH_CLIENT_PROTOCOL_TRACING选项,否则启用此选项无效。如果 MySQL 同时配置了两个选项,则libmysqlclient
Client 端库是使用内置的测试协议跟踪插件构建的,并且所有标准 MySQLClient 端都会加载该插件。但是,即使启用了测试插件,默认情况下它也不起作用。使用环境变量可以控制插件。参见第 28.2.4.11.1 节,“使用测试协议跟踪插件”。
Note
如果要使用自己的协议跟踪插件,请不要启用WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个这样的插件,并且尝试加载第二个插件时会出错。如果已经构建了启用了测试协议跟踪插件的 MySQL 以查看其工作原理,则必须在没有 MySQL 的情况下重建 MySQL,然后才能使用自己的插件。
有关编写跟踪插件的信息,请参见第 28.2.4.11 节,“编写协议跟踪插件”。
是否为支持它的编译器启用“未定义行为清理器”。默认为关闭。
如果启用,请使用单元测试编译 MySQL。除非未编译服务器,否则默认值为 ON。
为连接器/ ODBC 启用 unixODBC 支持。
是否在 Valgrind 头文件中进行编译,这会将 Valgrind API 暴露给 MySQL 代码。默认值为OFF
。
为了生成可识别 Valgrind 的调试版本,通常将-DWITH_VALGRIND=1与-DWITH_DEBUG=1结合使用。参见构建调试配置。
一些功能要求使用压缩库支持构建服务器,例如COMPRESS()和UNCOMPRESS()函数,以及压缩 Client 端/服务器协议。 WITH_ZLIBtable 示zlib
支持的来源:
-
bundled
:使用与发行版 Binding 在一起的zlib
库。这是默认值。system
:使用系统zlib
库。
Compiler Flags
C 编译器的标志。
C 编译器的标志。
是否使用cmake/build_configurations/compiler_options.cmake
中的标志。
Note
所有的优化标志都是由 MySQL 构建团队精心选择和测试的。覆盖它们会导致意外的结果,后果自负。
在 Solaris 10 或更高版本上,启用针对libCstd
而不是stlport4
的链接。这仅适用于 Client 端代码,因为服务器依赖于 C 98.
要指定自己的 C 和 C 编译器标志,对于不影响优化的标志,请使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGS CMake 选项。
提供自己的编译器标志时,您可能还需要指定CMAKE_BUILD_TYPE。
例如,要在 64 位 Linux 机器上创建 32 位发行版,请执行以下操作:
mkdir bld
cd bld
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_RELWITHDEBINFO
和CMAKE_CXX_FLAGS_RELWITHDEBINFO
选项。例如,要在具有-O3
和调试符号的 Linux 上进行编译,请执行以下操作:
cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
用于编译 NDB 群集的 CMake 选项
在使用 NDB Cluster 源构建 NDB Cluster 时,可以使用以下选项;使用 MySQL 5.6 服务器树中的源时,当前不支持它们。
使用安装在* dir_name
*指示的系统目录中的 memcached(1.6 或更高版本)执行构建。此安装中用于构建的文件包括 memcached 二进制文件,头文件和库,以及memcached_utilities
库和头文件engine_testapp.h
。
使用 Binding 的 Memcached 源构建ndbmemcache
时,必须保留此选项的设置(WITH_BUNDLED_MEMCACHED选项);换句话说,默认情况下使用 Binding 的来源。
虽然从外部源编译 memcached 时可以使用其他 CMake 选项(例如,用于 SASL 授权和提供dtrace
支持),但是当前 Binding 的 memcached 源未启用这些选项。使用 NDB 群集。
使用ndbmemcached
支持构建 NDB 群集时,请使用 NDB 群集源中包含的libevent
。默认启用。 OFF
导致改用系统的libevent
。
构建 NDB 群集源树中包含的 memcached 源,然后在构建ndbmemcache
引擎时使用生成的 memcached 服务器。在这种情况下, make install 会将 memcached 二进制文件放置在安装bin
目录中,并将ndbmemcache
引擎共享库文件ndb_engine.so
放置在安装lib
目录中。
默认情况下,此选项为 ON。
设置用于构建 NDB Cluster Connector for Java 的 Classpath。默认为空。如果使用-DWITH_NDB_JAVA=OFF,则忽略此选项。
在NDB内核中启用错误注入。仅用于测试;不适用于构建生产二进制文件。默认值为OFF
。
构建并链接以支持mysqld中的NDB(NDBCLUSTER)存储引擎。默认值为ON
。
这是WITH_NDBCLUSTER_STORAGE_ENGINE的别名。
构建多线程数据节点可执行文件ndbmtd。默认值为ON
。
默认情况下,在使用此选项构建的mysqld中启用二进制日志记录。默认为开。
启用构建 NDB 群集二进制文件的调试版本。默认关闭。
启用使用 Java 支持(包括ClusterJ
)构建 NDB 群集。
默认情况下,此选项为 ON。如果您不希望使用 Java 支持编译 NDB 群集,则必须在运行 CMake 时通过指定-DWITH_NDB_JAVA=OFF
显式禁用它。否则,如果找不到 Java,则构建的配置将失败。
默认情况下,使 NDB 群集 Management 服务器(ndb_mgmd)构建为使用此* port
*。如果未设置此选项,则默认情况下,结果 Management 服务器将尝试使用端口 1186.
如果启用,请包括一组 NDB API 测试程序。默认为关闭。