MySQL源配置选项
该CMake的程序提供的控制权如何配置MySQL源码分发很大。通常,您可以使用CMake命令行上的选项来执行此操作 。有关CMake支持的选项的信息,请在顶级源目录中运行以下命令之一:
shell> cmake . -LH
shell> ccmake .
您还可以使用某些环境变量影响CMake。请参见 第4.9节“MySQL程序环境变量”。
下表显示了可用的CMake 选项。在Default
列中, PREFIX
表示该CMAKE_INSTALL_PREFIX
选项的值,该值 指定安装基本目录。该值用作几个安装子目录的父位置。
表2.12 MySQL源配置选项参考(CMake)
格式 | 描述 | 默认 | 介绍 | 删除 |
---|---|---|---|---|
BUILD_CONFIG | 使用与官方版本相同的构建选项 | |||
CMAKE_BUILD_TYPE | 生产类型 | RelWithDebInfo | ||
CMAKE_CXX_FLAGS | C ++编译器的标志 | |||
CMAKE_C_FLAGS | C编译器的标志 | |||
CMAKE_INSTALL_PREFIX | 安装基地目录 | /usr/local/mysql | ||
COMPILATION_COMMENT | 关于编译环境的评论 | |||
CPACK_MONOLITHIC_INSTALL | 包构建是否生成单个文件 | OFF | ||
DEFAULT_CHARSET | 默认服务器字符集 | latin1 | ||
DEFAULT_COLLATION | 默认服务器排序规则 | latin1_swedish_ci | ||
DISABLE_PSI_COND | 排除性能模式条件仪器 | OFF | 5.7.3 | |
DISABLE_PSI_FILE | 排除性能模式文件检测 | OFF | 5.7.3 | |
DISABLE_PSI_IDLE | 排除性能模式空闲测试 | OFF | 5.7.3 | |
DISABLE_PSI_MEMORY | 排除性能模式存储器测试 | OFF | 5.7.3 | |
DISABLE_PSI_METADATA | 排除性能模式元数据测试 | OFF | 5.7.3 | |
DISABLE_PSI_MUTEX | 排除性能模式互斥检测 | OFF | 5.7.3 | |
DISABLE_PSI_RWLOCK | 排除性能模式rwlock仪器 | OFF | 5.7.3 | |
DISABLE_PSI_SOCKET | 排除性能模式套接字工具 | OFF | 5.7.3 | |
DISABLE_PSI_SP | 排除性能模式存储的程序工具 | OFF | 5.7.3 | |
DISABLE_PSI_STAGE | 排除性能模式阶段仪器 | OFF | 5.7.3 | |
DISABLE_PSI_STATEMENT | 排除性能模式语句工具 | OFF | 5.7.3 | |
DISABLE_PSI_STATEMENT_DIGEST | 排除性能模式statement_digest工具 | OFF | 5.7.3 | |
DISABLE_PSI_TABLE | 排除性能模式表工具 | OFF | 5.7.3 | |
DOWNLOAD_BOOST | 是否下载Boost库 | OFF | 5.7.5 | |
DOWNLOAD_BOOST_TIMEOUT | 下载Boost库超时(秒) | 600 | 5.7.6 | |
ENABLED_LOCAL_INFILE | 是否启用LOCAL用于LOAD DATA INFILE | OFF | ||
ENABLED_PROFILING | 是否启用查询分析代码 | ON | ||
ENABLE_DEBUG_SYNC | 是否启用Debug Sync支持 | ON | 5.7.1 | |
ENABLE_DOWNLOADS | 是否下载可选文件 | OFF | ||
ENABLE_DTRACE | 是否包括DTrace支持 | |||
ENABLE_GCOV | 是否包括gcov支持 | |||
ENABLE_GPROF | 启用gprof(仅优化Linux版本) | OFF | ||
FORCE_UNSUPPORTED_COMPILER | 是否允许不支持的编译器 | OFF | 5.7.5 | |
IGNORE_AIO_CHECK | 用-DBUILD_CONFIG = mysql_release,忽略libaio检查 | OFF | ||
INNODB_PAGE_ATOMIC_REF_COUNT | 启用或禁用原子页面引用计数 | ON | 5.7.4 | 5.7.5 |
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_MYSQLKEYRINGDIR | keyring_file插件数据文件的目录 | platform specific | 5.7.11 | |
INSTALL_MYSQLSHAREDIR | 共享数据目录 | PREFIX/share | ||
INSTALL_MYSQLTESTDIR | mysql-test目录 | PREFIX/mysql-test | ||
INSTALL_PKGCONFIGDIR | mysqlclient.pc pkg-config文件的目录 | INSTALL_LIBDIR/pkgconfig | 5.7.9 | |
INSTALL_PLUGINDIR | 插件目录 | PREFIX/lib/plugin | ||
INSTALL_SBINDIR | 服务器可执行文件 | PREFIX/bin | ||
INSTALL_SCRIPTDIR | 脚本目录 | PREFIX/scripts | ||
INSTALL_SECURE_FILE_PRIVDIR | secure_file_priv默认值 | platform specific | 5.7.6 | |
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR | libmysqld的secure_file_priv默认值 | 5.7.8 | ||
INSTALL_SHAREDIR | aclocal / mysql.m4安装目录 | PREFIX/share | ||
INSTALL_SQLBENCHDIR | sql-bench目录 | PREFIX | 5.7.8 | |
INSTALL_SUPPORTFILESDIR | 额外的支持文件目录 | PREFIX/support-files | ||
MAX_INDEXES | 每个表的最大索引数 | 64 | 5.7.1 | |
MUTEX_TYPE | InnoDB互斥体类型 | event | 5.7.2 | |
MYSQLX_TCP_PORT | X插件使用的TCP / IP端口号 | 33060 | 5.7.17 | |
MYSQLX_UNIX_ADDR | X插件使用的Unix套接字文件 | /tmp/mysqlx.sock | 5.7.15 | |
MYSQL_DATADIR | 数据目录 | |||
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 | 是否支持优化器跟踪 | |||
SUNPRO_CXX_LIBRARY | Solaris 10+上的客户端链接库 | 5.7.5 | ||
SYSCONFDIR | 选项文件目录 | |||
SYSTEMD_PID_DIR | 系统下PID文件的目录 | /var/run/mysqld | 5.7.6 | |
SYSTEMD_SERVICE_NAME | systemd下的MySQL服务名称 | mysqld | 5.7.6 | |
TMPDIR | tmpdir默认值 | 5.7.4 | ||
WIN_DEBUG_NO_INLINE | 是否禁用功能内联 | OFF | 5.7.6 | |
WITHOUT_SERVER | 不要建立服务器 | OFF | ||
WITHOUT_xxx_STORAGE_ENGINE | 从构建中排除存储引擎xxx | |||
WITH_ASAN | 启用AddressSanitizer | OFF | 5.7.3 | |
WITH_AUTHENTICATION_LDAP | 是否报告错误,如果LDAP认证插件无法构建 | OFF | 19年7月5日 | |
WITH_AUTHENTICATION_PAM | 构建PAM验证插件 | OFF | ||
WITH_BOOST | Boost库源的位置 | 5.7.5 | ||
WITH_CLIENT_PROTOCOL_TRACING | 构建客户端协议跟踪框架 | ON | 5.7.2 | |
WITH_DEBUG | 是否包括调试支持 | OFF | ||
WITH_DEFAULT_COMPILER_OPTIONS | 是否使用默认编译器选项 | ON | ||
WITH_DEFAULT_FEATURE_SET | 是否使用默认功能集 | ON | ||
WITH_EDITLINE | 哪个libedit / editline库要使用 | bundled | 5.7.2 | |
WITH_EMBEDDED_SERVER | 是否构建嵌入式服务器 | OFF | ||
WITH_EMBEDDED_SHARED_LIBRARY | 是否构建共享嵌入式服务器库 | OFF | 5.7.4 | |
WITH_EXTRA_CHARSETS | 要包括哪些额外的字符集 | all | ||
WITH_INNODB_EXTRA_DEBUG | 是否包含对InnoDB的额外调试支持。 | OFF | 5.7.2 | |
WITH_INNODB_MEMCACHED | 是否生成memcached共享库。 | OFF | ||
WITH_KEYRING_TEST | 构建密钥环测试程序 | OFF | 5.7.11 | |
WITH_LIBEVENT | 哪个libevent库要使用 | bundled | ||
WITH_LIBWRAP | 是否包含libwrap(TCP包装)支持 | OFF | ||
WITH_LZ4 | LZ4支持类型 | bundled | 5.7.14 | |
WITH_MECAB | 编译MeCab | 5.7.6 | ||
WITH_MSAN | 启用MemorySanitizer | OFF | 5.7.4 | |
WITH_MSCRT_DEBUG | 启用Visual Studio CRT内存泄漏跟踪 | OFF | 5.7.6 | |
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_SSL | SSL支持类型 | bundled | ||
WITH_SYSTEMD | 启用systemd支持文件的安装 | OFF | 5.7.6 | |
WITH_TEST_TRACE_PLUGIN | 构建测试协议跟踪插件 | OFF | 5.7.2 | |
WITH_UBSAN | 启用未定义的行为消毒剂 | OFF | 5.7.6 | |
WITH_UNIT_TESTS | 使用单元测试编译MySQL | ON | ||
WITH_UNIXODBC | 启用unixODBC支持 | OFF | ||
WITH_VALGRIND | 是否在Valgrind头文件中编译 | OFF | ||
WITH_ZLIB | zlib支持类型 | bundled | ||
WITH_xxx_STORAGE_ENGINE | 将存储引擎xxx静态编译到服务器中 |
默认 | 介绍 | 删除 |
---|
一般选项
-
此选项使用Oracle使用的相同构建选项来配置源分发,以生成官方MySQL版本的二进制发行版。
-
生产的类型:
-
RelWithDebInfo
:启用优化并生成调试信息。这是默认的MySQL构建类型。 -
Debug
:禁用优化并生成调试信息。如果WITH_DEBUG
启用该选项,也会使用此构建类型。也就是说,-DWITH_DEBUG=1
具有相同的效果-DCMAKE_BUILD_TYPE=Debug
。
-
-
-DCPACK_MONOLITHIC_INSTALL=
bool
此选项影响make包操作是否生成多个安装包文件或单个文件。如果禁用,该操作将生成多个安装包文件,如果您只想安装完整MySQL安装的一部分,这可能很有用。如果启用,它将生成一个文件来安装所有内容。
安装布局选项
该CMAKE_INSTALL_PREFIX
选项指示基本安装目录。指定组件位置的表单名称的其他选项 将相对于前缀进行解释,其值是相对路径名。 它们的值不应包含前缀。INSTALL_
xxx
-
-DCMAKE_INSTALL_PREFIX=
dir_name
安装基本目录。
可以使用该
--basedir
选项在服务器启动时设置此值 。 -
在哪里安装用户程序。
-
哪里安装文档。
-
-DINSTALL_DOCREADMEDIR=
dir_name
哪里安装
README
文件 -
在哪里安装头文件。
-
在哪里安装信息文件。
-
选择预定义的安装布局:
-
STANDALONE
:与用于.tar.gz
和.zip
包的布局相同 。这是默认值。 -
RPM
:布局类似于RPM包。 -
SVR4
:Solaris包布局。 -
DEB
:DEB封装布局(实验)。
您可以选择预定义的布局,但通过指定其他选项来修改单个组件安装位置。例如:
shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
从MySQL 5.7.6开始,该
INSTALL_LAYOUT
值决定secure_file_priv
系统和keyring_file_data
系统变量的默认值 ; 请参阅第5.1.5节“服务器系统变量”中对这些变量的描述。 -
-
哪里安装库文件
-
在哪里安装手册页。
-
-DINSTALL_MYSQLKEYRINGDIR=
dir_path
用作
keyring_file
插件数据文件位置的默认目录 。默认值是特定于平台的,取决于CMake选项的值 ; 请参见第5.1.5节“服务器系统变量”中的系统变量的描述 。INSTALL_LAYOUT
keyring_file_data
此选项已添加到MySQL 5.7.11中。
-
-DINSTALL_MYSQLSHAREDIR=
dir_name
在哪里安装共享数据文件。
-
-DINSTALL_MYSQLTESTDIR=
dir_name
在哪里安装
mysql-test
目录。从MySQL 5.7.2开始,要禁止安装此目录,请将该选项显式设置为空值(-DINSTALL_MYSQLTESTDIR=
)。 -
-DINSTALL_PKGCONFIGDIR=
dir_name
要安装pkg-config
mysqlclient.pc
使用的文件 的目录 。默认值是 ,除非 有结束 ,在这种情况下被首先删除。INSTALL_LIBDIR/pkgconfig
INSTALL_LIBDIR
/mysql
此选项已添加到MySQL 5.7.9中。
-
插件目录的位置。
可以使用该
--plugin_dir
选项在服务器启动时设置此值 。 -
在哪里安装mysqld服务器。
-
在哪里安装mysql_install_db。
-
-DINSTALL_SECURE_FILE_PRIVDIR=
dir_name
secure_file_priv
系统变量 的默认值 。默认值是特定于平台的,取决于CMake选项的值 ; 请参见第5.1.5节“服务器系统变量”中的系统变量的描述 。INSTALL_LAYOUT
secure_file_priv
此选项已添加到MySQL 5.7.6中。要设置
libmysqld
嵌入式服务器的值 ,请使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR
。 -
-DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=
dir_name
嵌入式服务器 的
secure_file_priv
系统变量的默认值libmysqld
。此选项已添加到MySQL 5.7.8中。注意从
libmysqld
MySQL 5.7.19起,嵌入式服务器库已被弃用,MySQL 8.0将被删除。 -
在哪里安装
aclocal/mysql.m4
。 -
-DINSTALL_SQLBENCHDIR=
dir_name
在哪里安装
sql-bench
目录。要禁止安装此目录,请将该选项显式设置为空值(-DINSTALL_SQLBENCHDIR=
)。从MySQL 5.7.8开始,该
sql-bench
目录不再包含在MYSQL发行版中,所以该INSTALL_SQLBENCHDIR=
选项也被删除。 -
-DINSTALL_SUPPORTFILESDIR=
dir_name
在哪里安装额外的支持文件。
-
MySQL数据目录的位置。
可以使用该
--datadir
选项在服务器启动时设置此值 。 -
ODBC的位置包括目录,并且可以在配置Connector / ODBC时使用。
-
ODBC库目录的位置,可以在配置Connector / ODBC时使用。
-
默认
my.cnf
选项文件目录。在服务器启动时无法设置此位置,但您可以使用 选项启动具有给定选项文件的服务器 ,其中是文件的完整路径名。
--defaults-file=
file_name
file_name
-
当MySQL由systemd管理时,创建PID文件的目录的名称。默认值为
/var/run/mysqld
; 这可能会根据INSTALL_LAYOUT
价值隐含地改变 。忽略此选项,除非
WITH_SYSTEMD
已启用。它被添加到MySQL 5.7.6中。 -
当MySQL由systemd管理时使用的MySQL服务的名称。默认值为
mysqld
; 这可能会根据INSTALL_LAYOUT
价值隐含地改变 。忽略此选项,除非
WITH_SYSTEMD
已启用。它被添加到MySQL 5.7.6中。 -
用于
tmpdir
系统变量的默认位置 。如果未指定,则该值默认为P_tmpdir
in<stdio.h>
。 此选项已添加到MySQL 5.7.4中。
存储引擎选项
存储引擎构建为插件。您可以将静态模块(编译到服务器中)或动态模块(构建为必须使用INSTALL PLUGIN
语句或--plugin-load
选项在使用之前必须安装到服务器中的动态库)构建插件。一些插件可能不支持静态或动态构建。
的InnoDB
, MyISAM
, MERGE
, MEMORY
,和 CSV
发动机是强制性的(总是编译到服务器)和无需显式安装。
要将存储引擎静态编译到服务器中,请使用 。一些可允许的值 ,, ,, 或 (),( 分区支持),和 (性能模式;这仅适用的MySQL 5.7.9之前,在该点处的性能模式变为强制性的)。例子: -DWITH_
engine
_STORAGE_ENGINE=1engine
ARCHIVE
BLACKHOLE
EXAMPLE
FEDERATED
NDB
NDBCLUSTER
NDB
PARTITION
PERFSCHEMA
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
WITH_NDBCLUSTER_STORAGE_ENGINE
仅在使用NDB群集源构建NDB群集时才受支持。它不能用于在其他MySQL源代码树或发行版中启用群集支持。在NDB群集源分发中,默认启用。有关详细信息,请参见 第21.2.2.4节“在Linux上从源构建NDB群集”和 第21.2.3.2节“在Windows上从源编译和安装NDB群集”。
从MySQL 5.7.9起,如果不支持性能架构,则无法进行编译。 如果希望在没有特定类型的仪器的情况下编译,可以使用以下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 。
从MySQL 5.7.4开始,要从构建中排除存储引擎,请使用 。例子: -DWITH_
engine
_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
-DWITH_PARTITION_STORAGE_ENGINE=0
在MySQL 5.7.4之前,要从构建中排除存储引擎,请使用 。(该语法也适用于5.7.4或更高版本,但 优选。)示例: -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
功能选项
-
关于编译环境的描述性评论。
-
-DDEFAULT_CHARSET=
charset_name
服务器字符集。 默认情况下,MySQL使用
latin1
(cp1252西欧)字符集。charset_name
可以是一种binary
,armscii8
,ascii
,big5
,cp1250
,cp1251
,cp1256
,cp1257
,cp850
,cp852
,cp866
,cp932
,dec8
,eucjpms
,euckr
,gb2312
,gbk
,geostd8
,greek
,hebrew
,hp8
,keybcs2
,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
选项在服务器启动时设置此值 。 -
-DDEFAULT_COLLATION=
collation_name
服务器排序规则。默认情况下,MySQL使用
latin1_swedish_ci
。使用该SHOW COLLATION
语句来确定哪些归类可用于每个字符集。可以使用该
--collation_server
选项在服务器启动时设置此值 。 -
是否排除性能模式条件检测。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema文件检测。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema空闲工具。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除性能模式存储器检测。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema元数据工具。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除性能模式互斥检测。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema rwlock工具。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema套接字工具。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema存储的程序工具。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema阶段工具。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除性能模式语句工具。 默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
-DDISABLE_PSI_STATEMENT_DIGEST=
bool
是否排除Performance Schema statement_digest工具。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否排除Performance Schema表的工具。默认值为
OFF
(包括)。 此选项已添加到MySQL 5.7.3中。 -
是否下载Boost库。默认是
OFF
。此选项已添加到MySQL 5.7.5中。WITH_BOOST
有关使用Boost的更多讨论, 请参阅该选项。 -
-DDOWNLOAD_BOOST_TIMEOUT=
seconds
下载Boost库的超时时间(秒)。默认值为600秒。此选项已添加到MySQL 5.7.6中。
WITH_BOOST
有关使用Boost的更多讨论, 请参阅该选项。 -
注意
从MySQL 5.7.18起,
ENABLE_DEBUG_SYNC
删除并启用WITH_DEBUG
启用调试同步功能。是否将Debug Sync设备编译到服务器中。该设备用于测试和调试。此选项默认启用,但没有任何效果,除非MySQL配置了启用调试。如果启用调试,并且要禁用调试同步,请使用
-DENABLE_DEBUG_SYNC=0
。编译时,默认情况下,在运行时禁用调试同步。 要启用它,请使用 选项启动mysqld,其中超时值大于0.(默认值为0,禁用调试同步)成为各个同步点的默认超时。
--debug-sync-timeout=
N
N
N
从MySQL 5.7.8起,
InnoDB
在使用该WITH_DEBUG
选项编译调试支持时,可以使用存储引擎的 同步调试检查 。有关Debug Sync工具的描述以及如何使用同步点,请参阅 MySQL Internals:测试同步。
-
是否下载可选文件。例如,启用此选项后,CMake会下载测试套件使用的Google Test发行版,以运行单元测试。
-
是否包括对DTrace探针的支持。有关DTrace的信息,请参见第5.7节“使用DTrace跟踪mysqld”
此选项不推荐使用,因为在MySQL 5.7中不支持DTrace,在MySQL 8.0中已被删除。
-
是否包含gcov支持(仅限Linux)。
-
是否启用
gprof
(仅优化Linux版本)。 -
此选项控制
LOCAL
MySQL客户端库的编译默认 功能。因此,不明确安排的客户端LOCAL
可以根据ENABLED_LOCAL_INFILE
MySQL构建时指定的设置禁用或启用功能 。默认情况下,MySQL二进制发行版中的客户端库已
ENABLED_LOCAL_INFILE
启用。如果从源代码编译MySQL,请ENABLED_LOCAL_INFILE
根据不明确排列的客户端是否应LOCAL
禁用或启用功能,将其配置为禁用或启用。ENABLED_LOCAL_INFILE
控制客户端LOCAL
功能的默认值。对于服务器,local_infile
系统变量控制服务器端LOCAL
功能。要明确地使服务器拒绝或允许LOAD DATA LOCAL
语句(不管在构建时或运行时如何配置客户端程序和库) ,请分别启用具有 禁用或启用的mysqldlocal_infile
。local_infile
也可以在运行时设置。请参见第6.1.6节“LOAD DATA LOCAL的安全问题”。 -
是否启用查询分析代码(对于
SHOW PROFILE
和SHOW PROFILES
语句)。 -
-DFORCE_UNSUPPORTED_COMPILER=
bool
默认情况下,CMake检查支持的编译器的最低版本:Visual Studio 2013(Windows); GCC 4.4或Clang 3.3(Linux); Developer Studio 12.5(Solaris服务器); Developer Studio 12.2或GCC 4.4(Solaris客户端库); Clang 3.3(macOS),Clang 3.3(FreeBSD)。要禁用此检查,请使用
-DFORCE_UNSUPPORTED_COMPILER=ON
。此选项已添加到MySQL 5.7.5中。 -
如果
-DBUILD_CONFIG=mysql_release
在Linux上给出了该 选项,那么该libaio
库必须默认链接。如果没有libaio
或不想安装,可以通过指定来禁止检查-DIGNORE_AIO_CHECK=1
。 -
-DINNODB_PAGE_ATOMIC_REF_COUNT=
bool
是否启用或禁用原子页引用计数。从缓冲池中获取和释放页面并跟踪页面状态是昂贵且复杂的操作。使用页面互斥体跟踪这些操作不能很好地扩展。使用
INNODB_PAGE_ATOMIC_REF_COUNT=ON
(默认),使用可用的atomics跟踪获取和释放。对于不支持INNODB_PAGE_ATOMIC_REF_COUNT=OFF
原子的平台,设置 为禁用原子页引用计数。当启用原子页引用计数(默认)时, 在服务器启动时会将错误日志打印到“
[Note] InnoDB: Using atomics to ref count buffer pool pages
”。如果原子页引用计数被禁用,则打印“[Note] InnoDB: Using mutexes to ref count buffer pool pages
”。INNODB_PAGE_ATOMIC_REF_COUNT
引入了针对MySQL Bug#68079的修复程序。该选项在MySQL 5.7.5中被删除。需要支持原子来构建MySQL 5.7.5版本的MySQL,这使得该选项过时。 -
每个表的最大索引数。默认值为64.最大值为255.小于64的值将被忽略,默认值为64。
-
是否启用MySQL维护者特定的开发环境。如果启用,此选项将导致编译器警告成为错误。
-
互斥体使用的类型
InnoDB
。选项包括:-
event
:使用事件互斥体。这是默认值和原来的InnoDB
互斥体实现。 -
sys
:在UNIX系统上使用POSIX互斥体。CRITICAL_SECTION
在Windows上使用onjects(如果有)。 -
futex
:使用Linux futexes而不是条件变量来调度等待线程。
-
-
X插件侦听TCP / IP连接的端口号。默认值为33060。
可以使用该
--mysqlx_port
选项在服务器启动时设置此值 。 -
服务器侦听X插件套接字连接的Unix套接字文件路径。 这必须是绝对路径名。默认是
/tmp/mysqlx.sock
。可以使用该
--mysqlx-socket
选项在服务器启动时设置此值 。 -
对于Windows或macOS,要包含在项目文件名中的项目名称。
-
服务器侦听TCP / IP连接的端口号。默认值为3306。
可以使用该
--port
选项在服务器启动时设置此值 。 -
服务器侦听套接字连接的Unix套接字文件路径。这必须是绝对路径名。默认是
/tmp/mysql.sock
。可以使用该
--socket
选项在服务器启动时设置此值 。 -
是否支持优化器跟踪。请参阅 MySQL内部:跟踪优化器。
-
是否禁用Windows上的功能内联。默认值为off(内联启用)。此选项已添加到MySQL 5.7.6中。
-
是否启用AddressSanitizer,支持它的编译器。默认是关闭。此选项已添加到MySQL 5.7.3中。
-
-DWITH_AUTHENTICATION_LDAP=
bool
如果无法构建LDAP验证插件,是否报告错误:
-
如果此选项被禁用(默认),则如果找到所需的头文件和库,则会构建LDAP插件。 如果没有,CMake会显示一个关于它的注释。
-
如果启用此选项,则无法找到所需的头文件和库会导致CMake 产生错误,从而阻止服务器被构建。
有关LDAP认证的信息,请参见 第6.5.1.8节“LDAP可插拔认证”。 此选项已添加到MySQL 5.7.19中。
-
-
-DWITH_AUTHENTICATION_PAM=
bool
是否构建PAM认证插件,用于包含此插件的源代码树。 (见 第6.5.1.6节“PAM可插拔认证”)从MySQL 5.7.2开始,如果指定了该选项,并且插件无法编译,则构建将失败。
-
从MySQL 5.7.5开始,需要Boost库构建MySQL。这些CMake选项启用对库源位置的控制,以及是否自动下载它:
-
-DWITH_BOOST=
指定Boost库目录位置。也可以通过设置path_name
BOOST_ROOT
或WITH_BOOST
环境变量来指定Boost位置 。从MySQL 5.7.11开始,
-DWITH_BOOST=system
允许并指示在标准位置的编译主机上安装了正确版本的Boost。在这种情况下,使用Boost的安装版本,而不是使用MySQL源代码发行版中包含的任何版本。 -
-DDOWNLOAD_BOOST=
指定是否下载Boost源(如果它不在指定位置)。默认是bool
OFF
。 -
-DDOWNLOAD_BOOST_TIMEOUT=
下载Boost库的超时时间(以秒为单位)。默认值为600秒。seconds
例如,如果您通常构建MySQL将对象输出放在
bld
MySQL源代码树的子目录中,则可以使用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 选项可以让您成功构建。
-
-
-DWITH_CLIENT_PROTOCOL_TRACING=
bool
是否将客户端协议跟踪框架构建到客户端库中。默认情况下,此选项被启用。此选项已添加到MySQL 5.7.2中。
有关编写协议跟踪客户端插件的信息,请参见第28.2.4.11节“编写协议跟踪插件”。
另见该
WITH_TEST_TRACE_PLUGIN
选项。 -
是否包括调试支持。
使用调试支持配置MySQL可以让您
--debug="d,parser_debug"
在启动服务器时使用该选项。这导致用于处理SQL语句的Bison解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出将写入错误日志。在使用该选项编译调试支持时,
InnoDB
定义存储引擎的 同步调试检查,UNIV_DEBUG
并可用WITH_DEBUG
。当编译调试支持时,innodb_sync_debug
配置选项可用于启用或禁用InnoDB
同步调试检查。从MySQL 5.7.18起,启用
WITH_DEBUG
也启用调试同步。有关Debug Sync工具的描述以及如何使用同步点,请参阅 MySQL Internals:测试同步。 -
-DWITH_DEFAULT_FEATURE_SET=
bool
是否使用标志
cmake/build_configurations/feature_set.cmake
。 -
要使用 哪个
libedit
/editline
库。允许的值为bundled
(默认值)和system
。WITH_EDITLINE
被添加到MySQL 5.7.2中。它取而代之WITH_LIBEDIT
,已被删除。 -
是否构建
libmysqld
嵌入式服务器库。注意从
libmysqld
MySQL 5.7.17起,嵌入式服务器库已被弃用,MySQL 8.0中将被删除。 -
-DWITH_EMBEDDED_SHARED_LIBRARY=
bool
是否构建共享
libmysqld
嵌入式服务器库。 此选项已添加到MySQL 5.7.4中。注意从
libmysqld
MySQL 5.7.17起,嵌入式服务器库已被弃用,MySQL 8.0中将被删除。 -
哪些额外的字符集包括:
-
all
:所有字符集。这是默认值。 -
complex
:复杂的字符集。 -
none
:没有额外的字符集。
-
-
-DWITH_INNODB_EXTRA_DEBUG=
bool
是否包含额外的InnoDB调试支持。
启用
WITH_INNODB_EXTRA_DEBUG
打开额外的InnoDB调试检查。只有启用此选项才能WITH_DEBUG
启用。 -
是否生成memcached共享库(
libmemcached.so
和innodb_engine.so
)。 -
是否构建
keyring_file
插件附带的测试程序 。默认是OFF
。测试文件源代码位于plugin/keyring/keyring-test
目录中。此选项已添加到MySQL 5.7.11中。
-
哪个
libevent
库要使用 允许的值为bundled
(默认值)system
,和yes
。如果您指定system
或yes
使用系统libevent
库(如果存在)。如果找不到系统库,libevent
则使用捆绑 库。该libevent
库是InnoDB
memcached 所必需的 。 -
是否包含
libwrap
(TCP包装)支持。 -
这
WITH_LZ4
表明zlib
支持的来源:-
bundled
:使用LZ4
与发行版捆绑在一起的库。这是默认值。 -
system
:使用系统LZ4
库。如果WITH_LZ4
设置为此值,则不构建lz4_decompress实用程序。在这种情况下, 可以使用系统lz4命令。
-
-
是否启用MemorySanitizer,支持它的编译器。默认是关闭。
对于此选项,如果启用该功能,则所有连接到MySQL的库也必须已经通过启用该选项进行编译。
此选项已添加到MySQL 5.7.4中。
-
-DWITH_MECAB={disabled|system|
path_name
}使用此选项来编译MeCab解析器。如果您已将MeCab安装到其默认安装目录,请设置
-DWITH_MECAB=system
。该system
选项适用于使用本机包管理实用程序从源或二进制文件执行的MeCab安装。如果您将MeCab安装到自定义安装目录,请指定MeCab安装路径。例如,-DWITH_MECAB=/opt/mecab
。如果该system
选项不起作用,则指定MeCab安装路径应该在所有情况下都起作用。有关相关信息,请参见 第12.9.9节“MeCab全文解析器插件”。
-
是否启用Visual Studio CRT内存泄漏跟踪。默认是
OFF
。此选项已添加到MySQL 5.7.6中。 -
明确设置NUMA内存分配策略。 CMake
WITH_NUMA
根据当前平台是否NUMA
支持设置默认 值。对于没有NUMA支持的平台,CMake的 行为如下:-
没有NUMA选项(正常情况下), CMake正常运行,仅产生此警告:缺少NUMA库或不可用版本
-
随着
-DWITH_NUMA=ON
, CMake的中止与此错误:NUMA库丢失或需要的版本不可用
此选项已添加到MySQL 5.7.17中。
-
-
哪个协议缓冲区包使用。
protobuf_type
可以是以下值之一:-
bundled
:使用与发行版捆绑在一起的包。这是默认值。 -
system
:使用系统上安装的软件包。
其他值将被忽略,后退到
bundled
。此选项已添加到MySQL 5.7.12中。
-
-
是否构建快速开发周期插件。启用后,将
rapid
在包含这些插件的构建树中创建一个目录。禁用时,不会rapid
在生成树中创建目录。默认值是ON
,除非rapid
目录从源代码树中删除 ,否则 默认值为OFF
。此选项已添加到MySQL 5.7.12中。 -
-DWITH_SSL={
|ssl_type
path_name
}要包含的SSL支持类型或要使用的OpenSSL安装的路径名。
-
ssl_type
可以是以下值之一:-
yes
:使用系统SSL库(如果存在),否则与发行版捆绑在一起的库。 -
bundled
:使用与发行版捆绑在一起的SSL库。这是默认值。 -
system
:使用系统SSL库。
-
-
path_name
是要使用的OpenSSL安装的路径名。使用这个可能比使用这个ssl_type
值 更好system
,因为它可以防止CMake检测并使用系统上安装的较旧或不正确的OpenSSL版本。(另一个允许的方式做同样的事情是设置CMAKE_PREFIX_PATH
选项path_name
。)
有关使用SSL支持的信息,请参见 第6.4节“使用加密连接”。
-
-
是否启用systemd支持文件的安装。默认情况下,此选项被禁用。 启用系统支持文件后, 将不安装mysqld_safe和System V初始化脚本等脚本。在systemd不可用的平台上,启用CMake
WITH_SYSTEMD
导致错误。有关使用systemd的更多信息,请参见第2.5.10节“使用systemd 管理MySQL服务器”。该部分还包括有关指定先前在
[mysqld_safe]
选项组中指定的 选项的信息。因为 在使用systemd时没有安装mysqld_safe,所以这个选项必须以另一种方式指定。此选项已添加到MySQL 5.7.6中。
-
是否构建测试协议跟踪客户端插件(请参见 第28.2.4.11.1节“使用测试协议跟踪插件”)。默认情况下,此选项被禁用。启用此选项不起作用,除非该
WITH_CLIENT_PROTOCOL_TRACING
选项被启用。如果MySQL配置启用了这两个选项,libmysqlclient
客户端库将内置测试协议跟踪插件构建,所有标准的MySQL客户端都会加载该插件。但是,即使启用测试插件,默认情况下也不起作用。使用环境变量来控制插件; 请参见第28.2.4.11.1节“使用测试协议跟踪插件”。此选项已添加到MySQL 5.7.2中。
注意不要不启用
WITH_TEST_TRACE_PLUGIN
,如果你想使用自己的协议跟踪的插件,因为只有一个这样的插件可以在同一时间被加载并出现错误尝试加载第二个选项。如果您已经使用启用了测试协议跟踪插件的MySQL来构建MySQL,以了解它是如何工作的,那么在使用自己的插件之前,您必须重新构建MySQL。有关编写跟踪插件的信息,请参见 第28.2.4.11节“编写协议跟踪插件”。
-
是否为支持它的编译器启用Undefined Behavior Sanitizer。默认是关闭。此选项已添加到MySQL 5.7.6中。
-
如果启用,则使用单元测试编译MySQL。默认值为ON,除非服务器未被编译。
-
为连接器/ ODBC启用unixODBC支持。
-
是否在Valgrind头文件中编译,这将Valgrind API暴露给MySQL代码。默认是
OFF
。要生成一个Valgrind感知的调试构建,
-DWITH_VALGRIND=1
通常与之结合-DWITH_DEBUG=1
。请参阅 构建调试配置。 -
某些功能要求服务器使用压缩库支持(如功能
COMPRESS()
和UNCOMPRESS()
功能)以及客户端/服务器协议的压缩来构建 。这WITH_ZLIB
表明zlib
支持的来源:-
bundled
:使用zlib
与发行版捆绑在一起的 库。这是默认值。 -
system
:使用系统zlib
库。
-
-
是否建立没有MySQL服务器。默认是
OFF
,它构建服务器。
编译器标志
-
C编译器的标志。
-
C ++编译器的标志。
-
-DWITH_DEFAULT_COMPILER_OPTIONS=
bool
是否使用标志
cmake/build_configurations/compiler_options.cmake
。注意所有优化标志都由MySQL构建团队精心挑选和测试。覆盖它们可能导致意想不到的结果,并且自己承担风险。
-
-DSUNPRO_CXX_LIBRARY="
“lib_name
启用链接
libCstd
而不是stlport4
Solaris 10或更高版本。这仅适用于客户端代码,因为服务器依赖于C ++ 98。 使用示例cmake -DWITHOUT_SERVER=1 -DSUNPRO_CXX_LIBRARY=Cstd
此选项已添加到MySQL 5.7.5中。
要指定自己的C和C ++编译器标志,对于不影响优化的标志,请使用 CMAKE_C_FLAGS
和 CMAKE_CXX_FLAGS
CMake选项。
当提供您自己的编译器标志时,您可能还需要指定 CMAKE_BUILD_TYPE
。
例如,要在64位Linux机器上创建32位版本,请执行以下操作:
shell> mkdir bld
shell> cd bld
shell> cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
如果设置了影响优化()的标志,则必须设置 与/或 选项对应的值。要为默认构建类型()指定不同的优化设置 和 选项。例如,要在带有调试符号的Linux上编译,请执行以下操作:-O
number
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
shell> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
用于编译NDB群集的CMake选项
在使用NDB群集源构建NDB群集时,可以使用以下选项; 当使用MySQL 5.6 Server树中的源时,目前不支持它们。
-
使用安装在系统目录中的memcached(版本1.6或更高版本)执行构建
dir_name
。在构建中使用的来自此安装的文件包括memcached二进制文件,头文件和库,以及memcached_utilities
库和头文件engine_testapp.h
。ndbmemcache
使用捆绑的memcached源(WITH_BUNDLED_MEMCACHED
选项) 构建时,必须使此选项不成立 ; 换句话说,默认情况下使用捆绑的源)。虽然在从外部源编译memcached时,可以使用其他CMake选项(例如SASL授权和提供
dtrace
支持),但是对于与NDB Cluster捆绑在一起的memcached源,这些选项目前尚未启用 。 -
-DWITH_BUNDLED_LIBEVENT={ON|OFF}
在使用支持
libevent
构建NDB群集时,请使用NDB群集源中包含的内容ndbmemcached
。默认启用。OFF
导致系统libevent
被使用。 -
-DWITH_BUNDLED_MEMCACHED={ON|OFF}
构建NDB群集源代码树中包含的memcached源,然后在构建
ndbmemcache
引擎时使用生成的memcached服务器。在这种情况下, make install将 memcached二进制文件放在安装bin
目录中,并将ndbmemcache
引擎共享库文件ndb_engine.so
放在安装lib
目录中。此选项默认为ON。
-
设置用于构建NDB Cluster Connector for Java的类路径。默认值为空。如果
-DWITH_NDB_JAVA=OFF
使用此选项将被忽略 。 -
启用
NDB
内核中的错误注入 。仅用于测试; 不用于构建生产二进制文件。默认是OFF
。 -
-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}
构建并链接到mysqld中的
NDB
(NDBCLUSTER
)存储引擎 。默认是 。ON
-
这是一个别名
WITH_NDBCLUSTER_STORAGE_ENGINE
。 -
构建多线程数据节点可执行文件 ndbmtd。默认是
ON
。 -
在使用此选项构建的mysqld中默认启用二进制日志记录 。默认为ON。
-
启用构建NDB群集二进制程序的调试版本。OFF。
-
启用使用Java支持构建NDB群集,包括
ClusterJ
。此选项默认为ON。如果您不希望使用Java支持编译NDB Cluster,则必须通过指定
-DWITH_NDB_JAVA=OFF
运行CMake时明确禁用它。否则,如果找不到Java,则构建的配置将失败。 -
导致默认使用该NDB群集管理服务器(ndb_mgmd)
port
。如果此选项未设置,则生成的管理服务器默认尝试使用端口1186。 -
如果启用,请包括一组NDB API测试程序。默认为OFF。
-