从源代码安装MySQL
通过源代码构建MySQL,可以自定义构建参数,编译器优化和安装位置。有关可以在其上运行MySQL的系统的列表,请参见 https://www.mysql.com/support/supportedplatforms/database.html。
从源进行安装之前,请检查Oracle是否为您的平台生成了预编译的二进制发行版,以及它是否对您有用。我们付出了巨大的努力来确保我们的二进制文件具有最佳选择,以实现最佳性能。“使用通用二进制文件在Unix / Linux上安装MySQL”中提供了安装二进制发行版的说明。
警告使用非标准选项构建MySQL可能会导致功能,性能或安全性下降。
MySQL源代码包含使用Doxygen编写的内部文档。生成的Doxygen内容可从 https://dev.mysql.com/doc/index-other.html获得。使用“生成MySQL Doxygen文档内容”中的说明,还可以从MySQL源分发本地生成此内容。
源码安装方法
有两种从源代码安装MySQL的方法:
使用标准的MySQL源分发。要获得标准发行版,有关从标准发行版进行构建的说明,
标准发行版以压缩的tar文件,Zip存档或RPM软件包的形式提供。分发文件有名字的形式,或者,在那里是一个数字一样。可以将源分发的文件名与预编译的二进制分发的文件名区分开,因为源分发名是通用的,不包含平台名,而二进制分发名包括一个平台名,该平台名指示分发所针对的系统类型(例如,或)。
mysql-VERSION.tar.gzmysql-VERSION.zipmysql-VERSION.rpmVERSION8.0.21pc-linux-i686winx64- 使用MySQL开发树。有关从其中一个开发树进行构建的信息,请参见“使用开发源树安装MySQL”。
源安装先决条件
从源代码安装MySQL需要几种开发工具。无论使用标准源分发版还是开发源树,都需要其中一些工具。其他工具要求取决于您使用的安装方法。
要从源代码安装MySQL,无论安装方法如何,都必须满足以下系统要求:
- CMake,在所有平台上都用作构建框架。CMake可以从 http://www.cmake.org下载。
- 一个好的make程序。尽管某些平台带有自己的make实现,但强烈建议您使用GNU make 3.75或更高版本。它可能已经在您的系统上以gmake的形式提供。可从http://www.gnu.org/software/make/获得 GNU make。
MySQL 8.0源代码允许使用C + + 14功能。为了在所有受支持的平台上实现良好的C + + 14支持水平,以下最低编译器版本适用:
- GCC 5.3(Linux)
- Clang 4.0(FreeBSD)
- XCode 9(macOS)
- Developer Studio 12.6(Solaris)
- Visual Studio 2017(Windows)
- MySQL C API需要使用C + +或C99编译器进行编译。
- 需要SSL库来支持加密连接,用于生成随机数的熵以及其他与加密有关的操作。默认情况下,构建使用主机系统上安装的OpenSSL库。要显式指定库,请
WITH_SSL在调用CMake时使用该选项。有关更多信息, Boost C + +库是构建MySQL所必需的(但不能使用它)。MySQL编译需要特定的Boost版本。通常,这是当前的Boost版本,但是如果特定的MySQL源发行版需要其他版本,则配置过程将停止,并显示一条消息,指示其需要的Boost版本。要获取Boost及其安装说明,请访问官方网站。安装Boost之后,通过
WITH_BOOST在调用CMake时定义选项来告诉构建系统Boost文件位于何处。例如:cmake . -DWITH_BOOST=/usr/local/boost_version_number
根据需要调整路径以匹配您的安装。
- 该 ncurses的图书馆。
- 足够的可用内存。如果在编译大型源文件时遇到诸如“内部编译器错误”之类的问题,则可能是内存太少。如果在虚拟机上编译,请尝试增加内存分配。
- 如果您打算运行测试脚本,则需要Perl。大多数类Unix系统包括Perl。在Windows上,您可以使用ActiveState Perl之类的版本。
要从标准源分发版安装MySQL,需要以下工具之一来解压缩分发文件:
对于
.tar.gz压缩的tar文件:GNUgunzip解压缩发行版,合理的tar解压缩。如果tar程序支持该z选项,则可以解压缩和解压缩文件。GNU tar可以工作。某些操作系统随附的标准tar无法解压缩MySQL发行版中的长文件名。您应该下载并安装GNU tar,或者使用GNU tar的预装版本(如果可用)。通常,这可以作为gnutar,GTAR,或焦油一个GNU或免费软件的目录中,如
/usr/sfw/bin或/usr/local/bin。可从http://www.gnu.org/software/tar/获得 GNU tar。- 对于
.zipZip存档:WinZip或其他可以读取.zip文件的工具。 - 对于
.rpmRPM软件包:用于构建发行版的rpmbuild程序将其解压缩。
要从开发源树安装MySQL,需要以下附加工具:
- 需要Git版本控制系统来获取开发源代码。在 GitHub的帮助提供了下载和在不同的平台上安装Git的指令。MySQL于2014年9月正式加入GitHub。有关MySQL移至GitHub的更多信息,请参阅MySQL Release Engineering博客上的公告:GitHub上的MySQL
野牛 2.1或更高版本,可从 http://www.gnu.org/software/bison/获得。(不再支持版本1。)请尽可能使用最新版本的野牛。如果遇到问题,请升级到更高版本,而不要恢复到较早版本。
野牛可从 http://www.gnu.org/software/bison/获得。
bison可以从 http://gnuwin32.sourceforge.net/packages/bison.htm下载Windows版。下载标有“完整的软件包,不包括来源”的软件包。在Windows上,野牛的默认位置是C:\Program Files\GnuWin32目录。由于目录名称中的空格,某些实用程序可能找不到野牛。此外,如果路径中有空格,Visual Studio可能只是挂起。您可以通过安装到不包含空格的目录中来解决这些问题(例如C:\GnuWin32)。- 在Solaris Express上,除了bison之外,还必须安装m4。m4可从http://www.gnu.org/software/m4/获得。
注意如果必须安装任何程序,请修改您的
PATH环境变量以包括程序所在的任何目录。
如果遇到问题并需要提交错误报告,请按照“如何报告错误或问题”中的说明进行操作。
用于源代码安装的MySQL布局
默认情况下,当您从源代码编译MySQL之后安装MySQL时,安装步骤会在下安装文件/usr/local/mysql。安装目录下的组件位置与二进制分发版中的组件位置相同。请参见表2.3,“通用Unix / Linux二进制软件包的MySQL安装布局”和“ Microsoft Windows上的MySQL安装布局”。要配置不同于默认设置的安装位置,请使用“ MySQL源代码配置选项”中所述的选项。
使用标准源分发版安装MySQL
要从标准源分发版安装MySQL:
- 验证系统是否满足“源安装先决条件”中列出的工具要求。
- 使用“如何获取MySQL”中的说明获取分发文件。
- 按照本节中的说明配置,构建和安装发行版。
- 按照“安装后的设置和测试”中的说明执行安装后的过程。
MySQL 在所有平台上都使用CMake作为构建框架。此处给出的说明应使您能够进行有效的安装。有关使用CMake生成MySQL的其他信息,请参见如何使用CMake生成MySQL服务器。
如果您从源RPM开始,请使用以下命令制作可以安装的二进制RPM。如果您没有rpmbuild,请改用rpm。
shell>rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
结果是您安装了一个或多个二进制RPM软件包,如“使用来自Oracle的RPM软件包在Linux上安装MySQL”所述。
从压缩的tar文件或Zip存档源发行版进行安装的顺序类似于从通用二进制发行版进行安装的过程(请参见“使用通用二进制文件在Unix / Linux上安装MySQL”),只是在所有平台,并包括配置和编译发行版的步骤。例如,对于Unix上的压缩tar文件源分发,基本安装命令序列如下所示:
# Preconfiguration setup shell>groupadd mysql shell>useradd -r -g mysql -s /bin/false mysql # Beginning of source-build specific instructions shell>tar zxvf mysql-VERSION.tar.gz shell>cd mysql-VERSION shell>mkdir bld shell>cd bld shell>cmake .. shell>make shell>make install # End of source-build specific instructions # Postinstallation setup shell>cd /usr/local/mysql shell>mkdir mysql-files shell>chown mysql:mysql mysql-files shell>chmod 750 mysql-files shell>bin/mysqld --initialize --user=mysql shell>bin/mysql_ssl_rsa_setup shell>bin/mysqld_safe --user=mysql & # Next command is optional shell>cp support-files/mysql.server /etc/init.d/mysql.server
下面显示了特定于源代码构建说明的详细版本。
注意此处显示的过程未为MySQL帐户设置任何密码。执行完该过程之后,请转至“安装后设置和测试”进行安装后设置和测试。
- 执行预配置设置
- 获取并解压缩发行版
- 配置发行版
- 建立发行版
- 安装发行版
- 执行安装后设置
执行预配置设置
在Unix上,设置mysql将用于运行和执行MySQL服务器并拥有数据库目录的用户和组。有关详细信息,请参见创建mysql用户和组。mysql除非另有说明,然后以用户身份执行以下步骤。
获取并解压缩发行版
选择要在其中解压缩发行版并将目录更改到其中的目录。
使用“如何获取MySQL”中的说明获取分发文件。
将发行版解压缩到当前目录中:
要解压缩压缩的tar文件,如果tar具有
z选项支持,则可以解压缩和解压缩发行版:shell>
tar zxvf mysql-VERSION.tar.gz如果您的tar不
z支持选件,请使用gunzip解压缩发行版,并使用tar解压缩:shell>
gunzip < mysql-VERSION.tar.gz | tar xvf -另外,CMake可以解压缩和解压缩发行版:
shell>
cmake -E tar zxvf mysql-VERSION.tar.gz- 要解压缩Zip存档,请使用WinZip或其他可以读取
.zip文件的工具。
解压缩分发文件将创建一个名为的目录。mysql-VERSION
配置发行版
将位置更改为解压缩发行版的顶级目录:
shell>cd mysql-VERSION
在源代码树之外进行构建以保持树的干净。如果顶级源目录是mysql-src在当前工作目录下命名的,则可以建立一个bld在同一目录下命名的目录。创建目录并转到那里:
shell>mkdir bld shell>cd bld
配置构建目录。最低配置命令不包含任何选项来覆盖默认配置:
shell>cmake ../mysql-src
构建目录不必在源代码树之外。例如,您可以建立在bld顶级源树下命名的目录。为此,首先从mysql-src当前工作目录开始,创建目录bld,然后转到该目录:
shell>mkdir bld shell>cd bld
配置构建目录。最低配置命令不包含任何选项来覆盖默认配置:
shell>cmake ..
如果您在同一级别具有多个源树(例如,用于构建MySQL的多个版本),则第二种策略可能是有利的。第一种策略将所有构建目录置于同一级别,这要求您为每个构建目录选择唯一的名称。使用第二种策略,您可以为每个源树中的构建目录使用相同的名称。以下说明采用第二种策略。
在Windows上,指定开发环境。例如,以下命令分别将MySQL配置为32位或64位版本:
shell>cmake .. -G "Visual Studio 12 2013" shell>cmake .. -G "Visual Studio 12 2013 Win64"
在macOS上,要使用Xcode IDE:
shell>cmake .. -G Xcode
运行cmake时,您可能想在命令行中添加选项。这里有些例子:
-DBUILD_CONFIG=mysql_release:使用Oracle用来生成正式MySQL版本的二进制发行版的相同构建选项配置源。-DCMAKE_INSTALL_PREFIX=dir_name:配置发行版以在特定位置进行安装。-DCPACK_MONOLITHIC_INSTALL=1:使make软件包生成单个安装文件,而不是多个文件。-DWITH_DEBUG=1:使用调试支持构建发行版。
有关选项的更广泛的列表,请参见“ MySQL源配置选项”。
要列出配置选项,请使用以下命令之一:
shell>cmake .. -L # overview shell>cmake .. -LH # overview with help text shell>cmake .. -LAH # all params with help text shell>ccmake .. # interactive display
如果CMake失败,则可能需要通过使用其他选项再次运行来重新配置。如果要重新配置,请注意以下几点:
- 如果CMake在先前运行之后运行,则它可能使用在其先前调用期间收集的信息。此信息存储在中
CMakeCache.txt。当CMake的启动时,它寻找该文件而且如果它存在读取内容,对假定信息仍然是正确的。重新配置时,该假设无效。 - 每次运行CMake时,都必须再次运行make进行重新编译。但是,您可能要先从以前的版本中删除旧的目标文件,因为它们是使用不同的配置选项编译的。
为了防止使用旧的目标文件或配置信息,请在Unix上的build direcotry中运行以下命令,然后重新运行CMake:
shell>make clean shell>rm CMakeCache.txt
或者,在Windows上:
shell>devenv MySQL.sln /clean shell>del CMakeCache.txt
在询问 MySQL Community Slack之前,请检查CMakeFiles目录中的文件以获取有关失败的有用信息。要提交错误报告,请按照“如何报告错误或问题”中的说明进行操作。
建立发行版
在Unix上:
shell>make shell>make VERBOSE=1
第二个命令设置VERBOSE为显示每个已编译源的命令。
在正在使用GNU make并且已将其安装为gmake的系统上使用gmake代替。
在Windows上:
shell>devenv MySQL.sln /build RelWithDebInfo
如果您已经进入编译阶段,但是发行版没有建立,请以获取帮助。如果那不能解决问题,请使用“如何报告错误或问题”中给出的说明将其输入到我们的错误数据库中。如果您已经安装了所需工具的最新版本,并且在尝试处理我们的配置文件时它们崩溃了,请也进行报告。但是,如果您在使用command not found所需工具时遇到错误或类似问题,请不要报告。相反,请确保已安装所有必需的工具,并PATH正确设置了变量,以便您的Shell可以找到它们。
安装发行版
在Unix上:
shell>make install
这会将文件安装在配置的安装目录(默认为/usr/local/mysql)下。您可能需要以方式运行命令root。
要安装在特定目录中,请DESTDIR在命令行中添加一个参数:
shell>make install DESTDIR="/opt/mysql"
或者,生成可以在您喜欢的位置安装的安装软件包文件:
shell>make package
此操作将产生一个或多个.tar.gz文件,这些文件可以像通用二进制分发程序包一样进行安装。请参见“使用通用二进制文件在Unix / Linux上安装MySQL”。如果您运行的CMake用-DCPACK_MONOLITHIC_INSTALL=1,操作产生的单个文件。否则,它将产生多个文件。
在Windows上,生成数据目录,然后创建一个.zip归档安装包:
shell>devenv MySQL.sln /build RelWithDebInfo /project initial_database shell>devenv MySQL.sln /build RelWithDebInfo /project package
您可以在所需的位置安装生成的.zip存档。请参见“使用noinstallZIP存档在Microsoft Windows上安装MySQL ”。
执行安装后设置
安装过程的其余部分涉及设置配置文件,创建核心数据库以及启动MySQL服务器。有关说明,
注意MySQL授予表中列出的帐户最初没有密码。启动服务器后,应按照“安装后的设置和测试”中的说明为它们设置密码。
使用开发源树安装MySQL
本节介绍如何从托管在GitHub上的最新开发源代码安装MySQL 。要从此存储库托管服务获取MySQL Server源代码,可以设置本地MySQL Git存储库。
在GitHub上,MySQL服务器和其他MySQL项目上找到 MySQL的页面。MySQL Server项目是一个单个存储库,其中包含多个MySQL系列的分支。
MySQL于2014年9月正式加入GitHub。有关MySQL移至GitHub的更多信息,请参阅MySQL Release Engineering博客上的公告:GitHub上的MySQL
- 从开发源安装的先决条件
- 设置一个MySQL Git仓库
从开发源安装的先决条件
要从开发源树安装MySQL,您的系统必须满足“源安装先决条件”中列出的工具要求。
设置一个MySQL Git仓库
要在您的计算机上设置MySQL Git存储库,请使用以下过程:
将MySQL Git存储库克隆到您的计算机。以下命令将MySQL Git存储库克隆到名为的目录中
mysql-server。初始下载将需要一些时间才能完成,具体取决于您的连接速度。~$
git clone https://github.com/mysql/mysql-server.git Cloning into 'mysql-server'... remote: Counting objects: 1198513, done. remote: Total 1198513 (delta 0), reused 0 (delta 0), pack-reused 1198513 Receiving objects: 100% (1198513/1198513), 1.01 GiB | 7.44 MiB/s, done. Resolving deltas: 100% (993200/993200), done. Checking connectivity... done. Checking out files: 100% (25510/25510), done.克隆操作完成后,本地MySQL Git存储库的内容将类似于以下内容:
~$
cd mysql-server ~/mysql-server$ls BUILD cmd-line-utils libservices sql CMakeLists.txt config.h.cmake man sql-common COPYING configure.cmake mysql-test storage Docs dbug mysys strings Doxyfile-perfschema extra mysys_ssl support-files INSTALL include packaging testclients README libbinlogevents plugin unittest VERSION libbinlogstandalone rapid vio client libevent regex win cmake libmysql scripts zlib使用git branch -r命令参见MySQL存储库的远程跟踪分支。
~/mysql-server$
git branch -r origin/5.5 origin/5.6 origin/5.7 origin/8.0 origin/HEAD -> origin/5.7 origin/cluster-7.2 origin/cluster-7.3 origin/cluster-7.4 origin/cluster-7.5要参见本地存储库中已签出的分支,请发出git branch命令。克隆MySQL Git存储库时,将自动检出MySQL 5.7分支。星号将5.7分支标识为活动分支。
~/mysql-server$
git branch * 5.7要签出另一个MySQL分支,请运行git checkout命令,并指定分支名称。例如,要检出MySQL 8.0分支:
~/mysql-server$
git checkout 8.0 Checking out files: 100% (9600/9600), done. Branch 8.0 set up to track remote branch 8.0 from origin. Switched to a new branch '8.0'运行
git branch以确认存在MySQL 8.0分支。MySQL 8.0是您签出的最后一个分支,并带有星号标记,表明它是活动分支。~/mysql-server$
git branch 5.7 * 8.0使用git checkout命令在分支之间切换。例如:
~/mysql-server$
git checkout 5.7要获得在初始设置MySQL Git存储库后所做的更改,请切换到要更新的分支并发出
git pull命令:~/mysql-server$
git checkout 8.0 ~/mysql-server$git pull要检查提交历史记录,请使用以下
git log选项:~/mysql-server$
git log您还可以在GitHub MySQL 网站上浏览提交历史记录和源代码。
如果您看到更改或有疑问的代码,请在MySQL Community Slack上提问。有关贡献补丁的信息,请参见贡献MySQL服务器。
克隆MySQL Git存储库并签出要构建的分支后,可以从源代码构建MySQL Server。“使用标准源分发版安装MySQL”中提供了说明,只是您跳过了有关获取和解压缩分发版的部分。
在生产计算机上从分发源树安装构建时要小心。安装命令可能会覆盖您的实时发行版安装。如果你已经安装了MySQL和不想覆盖它,运行CMake的与价值观
CMAKE_INSTALL_PREFIX,MYSQL_TCP_PORT以及MYSQL_UNIX_ADDR那些通过生产服务器使用不同的选项。有关防止多个服务器相互干扰的其他信息,请参见“在一台计算机上运行多个MySQL实例”。尝试新安装。例如,尝试使新功能崩溃。从运行make test开始。请参见“ MySQL测试套件”。
配置SSL库支持
需要SSL库来支持加密连接,用于生成随机数的熵以及其他与加密有关的操作。
如果从源发行版编译MySQL,则CMake会将发行版配置为默认使用已安装的OpenSSL库。
要使用OpenSSL进行编译,请使用以下过程:
- 确保系统上已安装OpenSSL 1.0.1或更高版本。如果安装的OpenSSL版本低于1.0.1,则CMake在MySQL配置时会产生错误。如果有必要获取OpenSSL,请访问http://www.openssl.org。
该CMake的选项确定用于编译MySQL的SSL库(参见第2.9.7“MySQL的源代码,配置选项”)。默认值为,它使用OpenSSL。为了使之明确,请在CMake命令行上指定该选项。例如:
WITH_SSL-DWITH_SSL=systemcmake . -DWITH_SSL=system
该命令将发行版配置为使用已安装的OpenSSL库。或者,要显式指定OpenSSL安装的路径名,请使用以下语法。如果您安装了多个版本的OpenSSL,这将很有用,以防止CMake选择错误的版本:
cmake . -DWITH_SSL=path_name
- 编译并安装发行版。
要检查mysqld服务器是否支持加密连接,请检查have_ssl系统变量的值:
mysql>SHOW VARIABLES LIKE 'have_ssl'; +--------------- +------- + | Variable_name | Value | +--------------- +------- + | have_ssl | YES | +--------------- +------- +
如果值为YES,则服务器支持加密连接。如果值为DISABLED,则服务器能够支持加密的连接,但未使用适当的选项启动服务器以启用加密的连接。请参见“配置MySQL以使用加密连接”。--ssl-xxx
MySQL源配置选项
该CMake的程序提供的控制权如何配置MySQL源码分发很大。通常,您可以使用CMake命令行上的选项来执行此操作。有关CMake支持的选项的信息,请在顶级源目录中运行以下命令之一:
cmake . -LH ccmake .
您还可以使用某些环境变量来影响CMake。请参见“命令行工具环境变量”。
对于布尔选项,可以将该值指定为1或ON启用该选项,或者指定为0或OFF禁用该选项。
许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,CMAKE_INSTALL_PREFIX,MYSQL_TCP_PORT,和MYSQL_UNIX_ADDR该配置缺省安装基本目录的位置,TCP / IP端口号和Unix套接字文件选项可以在与服务器启动而改变--basedir,--port和--socket选项的mysqld。在适用的情况下,配置选项描述指示相应的mysqld启动选项。
以下各节提供有关CMake选项的更多信息。
- CMake选项参考
- 常规选项
- 安装布局选项
- 存储引擎选项
- 功能选项
- 编译器标志
- 用于编译NDB群集的CMake选项
CMake选项参考
下表显示了可用的CMake选项。在该Default列中,PREFIX代表CMAKE_INSTALL_PREFIX选项的值,该选项指定安装基础目录。该值用作多个安装子目录的父位置。
表2.13 MySQL源配置选项参考(CMake)
| 格式 | 描述 | 默认 | 介绍了 | 已移除 |
|---|---|---|---|---|
ADD_GDB_INDEX | 是否在二进制文件中启用.gdb_index节的生成 | 8.0.18 | ||
BUILD_CONFIG | 使用与官方版本相同的构建选项 | |||
BUNDLE_RUNTIME_LIBRARIES | 将运行时库与服务器MSI和Zip软件包捆绑在一起(适用于Windows) | OFF | ||
CMAKE_BUILD_TYPE | 要生产的建筑类型 | RelWithDebInfo | ||
CMAKE_CXX_FLAGS | C + +编译器的标志 | |||
CMAKE_C_FLAGS | C编译器的标志 | |||
CMAKE_INSTALL_PREFIX | 安装基础目录 | /usr/local/mysql | ||
CMAKE_INSTALL_PRIV_LIBDIR | 安装专用库目录 | 8.0.18 | ||
COMPILATION_COMMENT | 关于编译环境的评论 | |||
COMPILATION_COMMENT_SERVER | 关于供mysqld使用的编译环境的评论 | 8.0.14 | ||
CPACK_MONOLITHIC_INSTALL | 软件包构建是否生成单个文件 | OFF | ||
DEFAULT_CHARSET | 默认服务器字符集 | utf8mb4 | ||
DEFAULT_COLLATION | 默认服务器排序规则 | utf8mb4_0900_ai_ci | ||
DISABLE_DATA_LOCK | 排除性能模式数据锁检测 | OFF | ||
DISABLE_PSI_COND | 排除性能模式条件检测 | 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 | 排除性能模式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 | 排除性能模式表检测 | OFF | ||
DISABLE_PSI_THREAD | 排除性能架构线程检测 | OFF | ||
DISABLE_PSI_TRANSACTION | 排除性能架构事务检测 | OFF | ||
DISABLE_SHARED | 不建立共享库,编译位置相关的代码 | OFF | 8.0.18 | |
DOWNLOAD_BOOST | 是否下载Boost库 | OFF | ||
DOWNLOAD_BOOST_TIMEOUT | 下载Boost库的超时时间(以秒为单位) | 600 | ||
ENABLED_LOCAL_INFILE | 是否为加载数据启用本地 | OFF | ||
ENABLED_PROFILING | 是否启用查询分析代码 | ON | ||
ENABLE_DOWNLOADS | 是否下载可选文件 | OFF | ||
ENABLE_EXPERIMENTAL_SYSVARS | 是否启用实验性InnoDB系统变量 | OFF | ||
ENABLE_GCOV | 是否包括gcov支持 | |||
ENABLE_GPROF | 启用gprof(仅限优化的Linux构建) | OFF | ||
FORCE_INSOURCE_BUILD | 是否强制进行源代码构建 | OFF | 8.0.14 | |
FORCE_UNSUPPORTED_COMPILER | 是否允许不支持的编译器 | OFF | ||
FPROFILE_GENERATE | 是否生成配置文件引导的优化数据 | OFF | 8.0.19 | |
FPROFILE_USE | 是否使用配置文件引导的优化数据 | OFF | 8.0.19 | |
IGNORE_AIO_CHECK | 使用-DBUILD_CONFIG = mysql_release时,忽略libaio检查 | OFF | ||
INSTALL_BINDIR | 用户可执行文件目录 | PREFIX/bin | ||
INSTALL_DOCDIR | 文档目录 | PREFIX/docs | ||
INSTALL_DOCREADMEDIR | 自述文件目录 | PREFIX | ||
INSTALL_INCLUDEDIR | 头文件目录 | PREFIX/include | ||
INSTALL_INFODIR | 信息文件目录 | PREFIX/docs | ||
INSTALL_LAYOUT | 选择预定义的安装布局 | STANDALONE | ||
INSTALL_LIBDIR | 库文件目录 | PREFIX/lib | ||
INSTALL_MANDIR | 手册页目录 | PREFIX/man | ||
INSTALL_MYSQLKEYRINGDIR | keyring_file插件数据文件的目录 | platform specific | ||
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_SBINDIR | 服务器可执行目录 | PREFIX/bin | ||
INSTALL_SECURE_FILE_PRIVDIR | secure_file_priv默认值 | platform specific | ||
INSTALL_SHAREDIR | clocal / 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 | ||
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 / 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 | 格外小心,以独立于构建位置和时间来创建构建结果 | |||
SYSCONFDIR | 选项文件目录 | |||
SYSTEMD_PID_DIR | systemd下PID文件的目录 | /var/run/mysqld | ||
SYSTEMD_SERVICE_NAME | systemd下的MySQL服务名称 | mysqld | ||
TMPDIR | tmpdir默认值 | |||
USE_LD_GOLD | 是否使用GNU黄金链接器 | ON | ||
USE_LD_LLD | 是否使用llvm lld链接器 | ON | 8.0.16 | |
WIN_DEBUG_NO_INLINE | 是否禁用功能内联 | OFF | ||
WITHOUT_xxx_STORAGE_ENGINE | 从构建中排除存储引擎xxx | |||
WITH_ANT | 用于构建GCS Java包装器的Ant路径 | |||
WITH_ASAN | 启用AddressSanitizer | OFF | ||
WITH_ASAN_SCOPE | 启用AddressSanitizer -fsanitize-address-use-scope范围Clang标志 | OFF | ||
WITH_AUTHENTICATION_LDAP | 如果无法构建LDAP认证插件,是否报告错误 | OFF | ||
WITH_AUTHENTICATION_PAM | 构建PAM身份验证插件 | OFF | ||
WITH_AWS_SDK | Amazon Web Services软件开发套件的位置 | |||
WITH_BOOST | Boost库源代码的位置 | |||
WITH_CLIENT_PROTOCOL_TRACING | 建立客户端协议跟踪框架 | ON | ||
WITH_CURL | curl库的位置 | |||
WITH_DEBUG | 是否包括调试支持 | OFF | ||
WITH_DEFAULT_COMPILER_OPTIONS | 是否使用默认的编译器选项 | ON | ||
WITH_DEFAULT_FEATURE_SET | 是否使用默认功能集 | ON | ||
WITH_EDITLINE | 使用哪个libedit / editline库 | bundled | ||
WITH_GMOCK | googlemock分发路径 | |||
WITH_ICU | ICU支持类型 | bundled | ||
WITH_INNODB_EXTRA_DEBUG | 是否包括对InnoDB的额外调试支持。 | OFF | ||
WITH_INNODB_MEMCACHED | 是否生成memcached共享库。 | OFF | ||
WITH_JEMALLOC | 是否与-ljemalloc链接 | OFF | 8.0.16 | |
WITH_KEYRING_TEST | 建立密钥环测试程序 | OFF | ||
WITH_LIBEVENT | 使用哪个libevent库 | bundled | ||
WITH_LIBWRAP | 是否包括libwrap(TCP包装器)支持 | OFF | ||
WITH_LOCK_ORDER | 是否启用LOCK_ORDER工具 | OFF | 8.0.17 | |
WITH_LSAN | 是否在没有AddressSanitizer的情况下运行LeakSanitizer | OFF | 8.0.16 | |
WITH_LTO | 启用链接时间优化器 | OFF | 8.0.13 | |
WITH_LZ4 | LZ4库支持的类型 | bundled | ||
WITH_LZMA | LZMA库支持的类型 | bundled | 8.0.16 | |
WITH_MECAB | 编译MeCab | |||
WITH_MSAN | 启用MemorySanitizer | OFF | ||
WITH_MSCRT_DEBUG | 启用Visual Studio CRT内存泄漏跟踪 | OFF | ||
WITH_MYSQLX | 是否禁用X协议 | ON | ||
WITH_NUMA | 设置NUMA内存分配策略 | |||
WITH_PROTOBUF | 使用哪个协议缓冲区包 | bundled | ||
WITH_RAPID | 是否构建快速开发周期插件 | ON | ||
WITH_RAPIDJSON | RapidJSON支持的类型 | bundled | 8.0.13 | |
WITH_RE2 | RE2库支持的类型 | bundled | 8.0.18 | |
WITH_ROUTER | 是否建立MySQL路由器 | ON | 8.0.16 | |
WITH_SSL | SSL支持类型 | system | ||
WITH_SYSTEMD | 启用系统支持文件的安装 | OFF | ||
WITH_SYSTEM_LIBS | 设置未明确设置的库选项的系统值 | 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_ZLIB | zlib支持的类型 | bundled | ||
WITH_ZSTD | zstd支持的类型 | bundled | 8.0.18 | |
WITH_xxx_STORAGE_ENGINE | 将存储引擎xxx静态编译到服务器中 |
常规选项
-DBUILD_CONFIG=mysql_release该选项使用与Oracle相同的构建选项来配置源发行版,Oracle使用这些生成选项来为MySQL官方发行版生成二进制发行版。
-DBUNDLE_RUNTIME_LIBRARIES=bool是否将运行时库与Windows的服务器MSI和Zip软件包捆绑在一起。
-DCMAKE_BUILD_TYPE=type生成的构建类型:
RelWithDebInfo:启用优化并生成调试信息。这是默认的MySQL构建类型。Release:启用优化,但省略调试信息以减小构建大小。该构建类型是在MySQL 8.0.13中添加的。Debug:禁用优化并生成调试信息。如果WITH_DEBUG启用该选项,则也使用此构建类型。即-DWITH_DEBUG=1具有与相同的效果-DCMAKE_BUILD_TYPE=Debug。
-DCPACK_MONOLITHIC_INSTALL=bool此选项影响make软件包操作是生成多个安装软件包文件还是单个文件。如果禁用,该操作将产生多个安装包文件,如果您只想安装完整MySQL安装的一部分,则可能很有用。如果启用,它将生成一个用于安装所有内容的文件。
-DFORCE_INSOURCE_BUILD=bool定义是否强制进行源内构建。推荐使用源外版本,因为它们允许来自同一源的多个版本,并且可以通过删除版本目录来快速执行清理。要强制在代码构建,调用CMake的使用
-DFORCE_INSOURCE_BUILD=ON。
安装布局选项
该CMAKE_INSTALL_PREFIX选项指示基本安装目录。具有指示组件位置的形式名称的其他选项是相对于前缀解释的,并且它们的值是相对路径名。它们的值不应包含前缀。INSTALL_xxx
-DCMAKE_INSTALL_PREFIX=dir_name安装基础目录。
可以使用
--basedir选项在服务器启动时设置此值。-DINSTALL_BINDIR=dir_name在哪里安装用户程序。
-DINSTALL_DOCDIR=dir_name在哪里安装文档。
-DINSTALL_DOCREADMEDIR=dir_name在哪里安装
README文件。-DINSTALL_INCLUDEDIR=dir_name哪里安装头文件。
-DINSTALL_INFODIR=dir_name在哪里安装信息文件。
-DINSTALL_LAYOUT=name选择预定义的安装布局:
STANDALONE:与.tar.gz和.zip软件包使用的布局相同。这是默认值。RPM:布局类似于RPM软件包。SVR4:Solaris软件包布局。DEB:DEB程序包布局(实验)。
您可以选择预定义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如:
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/dat
INSTALL_LAYOUT值确定的默认值secure_file_priv,keyring_encrypted_file_dat和keyring_file_dat系统变量。请参见“服务器系统变量”和“密钥环系统变量”中对这些变量的描述。-DINSTALL_LIBDIR=dir_name在哪里安装库文件。
-DINSTALL_MANDIR=dir_name在哪里安装手册页。
-DINSTALL_MYSQLKEYRINGDIR=dir_path用作
keyring_file插件数据文件位置的默认目录。默认值是特定于平台的,并取决于CMake选项的值。请参见“服务器系统变量”中对系统变量的描述。INSTALL_LAYOUTkeyring_file_dat-DINSTALL_MYSQLSHAREDIR=dir_name在何处安装共享数据文件。
-DINSTALL_MYSQLTESTDIR=dir_name安装
mysql-test目录的位置。要禁止安装此目录,请将选项显式设置为空值(-DINSTALL_MYSQLTESTDIR=)。-DINSTALL_PKGCONFIGDIR=dir_name要安装
mysqlclient.pc文件的目录,以供pkg-config使用。INSTALL_LIBDIR/pkgconfig除非INSTALL_LIBDIR以结束,否则默认值为/mysql,在这种情况下,该值将被首先删除。-DINSTALL_PLUGINDIR=dir_name插件目录的位置。
可以使用
--plugin_dir选项在服务器启动时设置此值。-DINSTALL_PRIV_LIBDIR=dir_name动态库目录的位置。
默认位置:RPM =
/usr/lib64/mysql/private/,DEB =/usr/lib/mysql/private/和TAR =lib/private/。该选项是在MySQL 8.0.18中添加的。
对于Protobuf:由于这是一个私有位置,因此加载程序(例如Linux上的ld-linux.so)在
libprotobuf.so没有帮助的情况下可能找不到文件。为了引导加载程序,RPATH将值$ ORIGIN /../$ INSTALL_PRIV_LIBDIR添加到mysqld和mysqlxtest中。这在大多数情况下都有效,但是在使用资源组功能时,mysqld是setsuid,然后加载程序会忽略RPATH其中包含$ORIGIN。为了克服这个问题,在mysqld的DEB和RPM变体中设置了目录的显式完整路径,因为目标位置是已知的。对于tarball安装,需要使用诸如patchelf之类的工具来修补mysqld 。-DINSTALL_SBINDIR=dir_name在哪里安装mysqld服务器。
-DINSTALL_SECURE_FILE_PRIVDIR=dir_namesecure_file_priv系统变量的默认值。默认值是特定于平台的,并取决于CMake选项的值。请参见“服务器系统变量”中对系统变量的描述。INSTALL_LAYOUTsecure_file_priv-DINSTALL_SHAREDIR=dir_name在哪里安装
clocal/mysql.m4。-DINSTALL_STATIC_LIBRARIES=bool是否安装静态库。默认值为
ON。如果设置为OFF,则不会安装以下库:libmysqlclient.,libmysqlservices.。-DINSTALL_SUPPORTFILESDIR=dir_name在哪里安装其他支持文件。
-DLINK_RANDOMIZE=bool是否随机化mysqld二进制文件中符号的顺序。默认值为
OFF。应该仅出于调试目的而启用此选项。-DLINK_RANDOMIZE_SEED=valLINK_RANDOMIZE选项的种子值。该值是一个字符串。默认值为mysql,是任意选择。-DMYSQL_DATADIR=dir_nameMySQL数据目录的位置。
可以使用
--datadir选项在服务器启动时设置此值。-DODBC_INCLUDES=dir_nameODBC的位置包括目录,并且可以在配置连接器/ ODBC时使用。
-DODBC_LIB_DIR=dir_nameODBC库目录的位置,可在配置连接器/ ODBC时使用。
-DSYSCONFDIR=dir_name默认
my.cnf选项文件目录。无法在服务器启动时设置此位置,但是可以使用选项使用给定的选项文件启动服务器,其中该文件的完整路径名是。
--defaults-file=file_namefile_name-DSYSTEMD_PID_DIR=dir_name当MySQL由systemd管理时,在其中创建PID文件的目录名称。默认值为
/var/run/mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。除非
WITH_SYSTEMD启用,否则将忽略此选项。-DSYSTEMD_SERVICE_NAME=nameMySQL由systemd管理时使用的MySQL服务的名称。默认值为
mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。除非
WITH_SYSTEMD启用,否则将忽略此选项。-DTMPDIR=dir_nametmpdir系统变量使用的默认位置。如果未指定,则默认值为P_tmpdirin<stdio.h>。
存储引擎选项
存储引擎是作为插件构建的。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用该INSTALL PLUGIN语句或--plugin-load选项安装在服务器中,然后才能使用该插件)。一些插件可能不支持静态或动态构建。
InnoDB,MyISAM,MERGE,MEMORY,和CSV发动机是强制性的(总是编译到服务器)和无需显式安装。
要将存储引擎静态编译到服务器中,请使用。一些可允许的值,,,,和或(支持)。例子:-DWITH_engine_STORAGE_ENGINE=1engineARCHIVEBLACKHOLEEXAMPLEFEDERATEDNDBNDBCLUSTERNDB
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1
注意如果没有Performance Schema支持,则无法进行编译。如果需要不使用特定类型的工具进行编译,则可以使用以下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以外的链接器,则该链接无效。该选项是在MySQL 8.0.18中添加的。
-DCOMPILATION_COMMENT=string关于编译环境的描述性评论。从MySQL 8.0.14开始,mysqld使用
COMPILATION_COMMENT_SERVER。其他程序继续使用COMPILATION_COMMENT。-DCOMPILATION_COMMENT_SERVER=string关于mysqld使用的编译环境的描述性注释(例如,设置
version_comment系统变量)。该选项是在MySQL 8.0.14中添加的。在8.0.14之前,服务器使用COMPILATION_COMMENT。-DDEFAULT_CHARSET=charset_name服务器字符集。默认情况下,MySQL使用
utf8mb4字符集。charset_name可以是一种binary,rmscii8,scii,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使用
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是否排除Performance Schema rwlock工具。默认值为
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是否排除Performance Schema statement_digest工具。默认值为
OFF(包括)。-DDISABLE_PSI_TABLE=bool是否排除性能模式表工具。默认值为
OFF(包括)。-DDISABLE_SHARED=bool是否禁用构建构建共享库并编译与位置相关的代码。默认值为
OFF(编译与位置无关的代码)。此选项未使用,并已在MySQL 8.0.18中删除。
-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(包括)。-DDOWNLOAD_BOOST=bool是否下载Boost库。默认值为
OFF。WITH_BOOST有关使用Boost的其他讨论,请参见该选项。-DDOWNLOAD_BOOST_TIMEOUT=seconds下载Boost库的超时时间(以秒为单位)。默认值为600秒。
WITH_BOOST有关使用Boost的其他讨论,请参见该选项。-DENABLE_DOWNLOADS=bool是否下载可选文件。例如,启用此选项后,CMake将下载测试套件用于运行单元测试的Google Test发行版,或构建GCS Java包装程序所需的Ant和JUnit。
-DENABLE_EXPERIMENTAL_SYSVARS=bool是否启用实验
InnoDB系统变量。实验性系统变量是供那些从事MySQL开发的人员使用的,只能在开发或测试环境中使用,并且在将来的MySQL版本中可能会被删除,恕不另行通知。有关实验系统变量的信息,请参见/storage/innobase/handler/ha_innodb.ccMySQL源代码树。可以通过搜索“ PLUGIN_VAR_EXPERIMENTAL ”来识别实验系统变量。-DENABLE_GCOV=bool是否包括gcov支持(仅Linux)。
-DENABLE_GPROF=bool是否启用
gprof(仅优化的Linux构建)。-DENABLED_LOCAL_INFILE=bool此选项控制
LOCALMySQL客户端库的内置默认功能。因此,没有明确安排的客户端将LOCAL根据ENABLED_LOCAL_INFILEMySQL构建时指定的设置禁用或启用功能。默认情况下,MySQL二进制发行版中的客户端库在
ENABLED_LOCAL_INFILE禁用的情况下进行编译。如果从源代码编译MySQL,请ENABLED_LOCAL_INFILE根据未进行显式安排的客户端应LOCAL分别禁用还是启用功能,将其配置为禁用或启用。ENABLED_LOCAL_INFILE控制客户端LOCAL功能的默认设置。对于服务器,local_infile系统变量控制服务器端LOCAL功能。要明确原因服务器拒绝或允许LOAD DATA LOCAL语句(不管有客户程序和库在构建时或运行时配置),启动mysqld的与local_infile分别禁用或启用。local_infile也可以在运行时设置。请参见“ LOAD DATA LOCAL的安全性问题”。-DENABLED_PROFILING=bool是否启用查询概要分析代码(用于
SHOW PROFILE和SHOW PROFILES语句)。-DFORCE_UNSUPPORTED_COMPILER=bool默认情况下,CMake检查受支持编译器的最低版本:Visual Studio 2015(Windows);GCC 4.8或Clang 3.4(Linux);Developer Studio 12.5(Solaris服务器);Developer Studio 12.4或GCC 4.8(Solaris客户端库);Clang 3.6(macOS),Clang 3.4(FreeBSD)。要禁用此检查,请使用
-DFORCE_UNSUPPORTED_COMPILER=ON。-DFPROFILE_GENERATE=bool是否生成配置文件引导的优化(PGO)数据。此选项可用于在GCC上试用PGO。
cmake/fprofile.cmake有关使用FPROFILE_GENERATE和的信息,请参见MySQL源代码分发中的文件FPROFILE_USE。这些选项已在GCC 8和9中进行了测试。该选项是在MySQL 8.0.19中添加的。
-DFPROFILE_USE=bool是否使用配置文件引导的优化(PGO)数据。此选项可用于在GCC上试用PGO。
cmake/fprofile.cmake有关使用FPROFILE_GENERATE和的信息,请参见MySQL源代码分发中的文件FPROFILE_USE。这些选项已在GCC 8和9中进行了测试。启用
FPROFILE_USE也会启用WITH_LTO。该选项是在MySQL 8.0.19中添加的。
-DIGNORE_AIO_CHECK=bool如果
-DBUILD_CONFIG=mysql_release在Linux上提供了该选项,则libaio默认情况下必须链接该库。如果您没有libaio或不想安装它,可以通过指定取消对它的检查-DIGNORE_AIO_CHECK=1。-DMAX_INDEXES=num每个表的最大索引数。默认值为64。最大值为255。小于64的值将被忽略,并使用默认值64。
-DMYSQL_MAINTAINER_MODE=bool是否启用特定于MySQL维护人员的开发环境。如果启用,此选项将导致编译器警告变为错误。
-DMUTEX_TYPE=type所使用的互斥锁类型
InnoDB。选项包括:event:使用事件互斥锁。这是默认值和原始InnoDB互斥量实现。sys注意:在UNIX系统上使用POSIX互斥锁。CRITICAL_SECTION如果可用,请在Windows上使用onject。futex:使用Linux futexes而不是条件变量来安排等待线程。
-DMYSQLX_TCP_PORT=port_numX插件侦听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系统上的构建,此选项控制是否要特别注意创建与构建位置和时间无关的构建结果。
该选项是在MySQL 8.0.11中添加的。从MySQL 8.0.12开始,它默认
ON用于RelWithDebInfobuild。-DUSE_LD_GOLD=boolCMake使构建过程与GNU gold链接程序链接(如果可用且未明确禁用)。要禁用此链接器,请指定
-DUSE_LD_GOLD=OFF选项。-DUSE_LD_LLD=boolCMake使构建过程与 Clang的 llvm lld链接程序链接(如果可用且未明确禁用)。要禁用此链接器,请指定
-DUSE_LD_LLD=OFF选项。该选项是在MySQL 8.0.16中添加的。
-DWIN_DEBUG_NO_INLINE=bool是否在Windows上禁用功能内联。默认为关闭(启用内联)。
-DWITH_ANT=path_name将路径设置为构建GCS Java包装器时所需的Ant。以与现有
WITH_BOOSTCMake选项类似的方式工作。设置WITH_ANT为Ant tarball或已经解压缩的归档文件保存目录的路径。如果WITH_ANT未设置或使用特殊值设置system,则构建假定中存在二进制蚂蚁$PATH。-DWITH_ASAN=bool是否为支持它的编译器启用AddressSanitizer。默认为关闭。
-DWITH_ASAN_SCOPE=bool是否启用
-fsanitize-address-use-after-scope用于范围后使用检测的AddressSanitizer Clang标志。默认为关闭。要使用此选项,-DWITH_ASAN还必须启用。-DWITH_AUTHENTICATION_LDAP=bool如果无法构建LDAP认证插件,是否报告错误:
- 如果禁用此选项(默认设置),则在找到所需的头文件和库的情况下将构建LDAP插件。如果不是,则CMake会显示一条注释。
- 如果启用此选项,则无法找到所需的头文件和库会导致CMake产生错误,从而阻止构建服务器。
-DWITH_AUTHENTICATION_PAM=bool是否为包含此插件的源树构建PAM身份验证插件。(请参见“ PAM可插拔身份验证”。)如果指定了此选项并且无法编译插件,则构建将失败。
-DWITH_AWS_SDK=path_nameAmazon Web Services软件开发套件的位置。
-DWITH_BOOST=path_nameBoost库是构建MySQL所必需的。这些CMake选项可控制库源位置以及是否自动下载:
-DWITH_BOOST=path_name指定Boost库目录位置。也可以通过设置BOOST_ROOT或WITH_BOOST环境变量来指定Boost位置。-DWITH_BOOST=system也被允许,并指示在标准位置的编译主机上安装了正确版本的Boost。在这种情况下,将使用已安装的Boost版本,而不是MySQL源代码发行版中包含的任何版本。-DDOWNLOAD_BOOST=bool指定是否在指定位置不存在的情况下下载Boost源。默认值为OFF。-DDOWNLOAD_BOOST_TIMEOUT=seconds下载Boost库的超时时间(以秒为单位)。默认值为600秒。
例如,如果您通常构建MySQL并将对象输出放置在
bldMySQL源树的子目录中,则可以使用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版本,并且编译可能会失败。-DWITH_CLIENT_PROTOCOL_TRACING=bool是否将客户端协议跟踪框架构建到客户端库中。默认情况下,启用此选项。
有关编写协议跟踪客户端插件的信息,请参见“编写协议跟踪插件”。
另请参阅
WITH_TEST_TRACE_PLUGIN选项。-DWITH_CURL=curl_typecurl库的位置。
curl_type可以是system(使用系统卷曲库)或路径名卷曲库。-DWITH_DEBUG=bool是否包括调试支持。
通过调试支持配置MySQL,可以
--debug="d,parser_debug"在启动服务器时使用该选项。这将导致用于处理SQL语句的Bison解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出将写入错误日志。InnoDB存储引擎的同步调试检查在下定义,UNIV_DEBUG在使用WITH_DEBUG选项编译调试支持时可用。编译调试支持后,innodb_sync_debug可使用配置选项启用或禁用InnoDB同步调试检查。启用
WITH_DEBUG还启用调试同步。该工具用于测试和调试。编译时,默认情况下在运行时禁用“调试同步”。要启用它,请使用选项启动mysqld,其中超时值大于0。(默认值为0,禁用调试同步。)成为各个同步点的默认超时。--debug-sync-timeout=NNNInnoDB使用WITH_DEBUG选项编译调试支持时,可以使用存储引擎的同步调试检查功能。有关“调试同步”工具以及如何使用同步点的说明,请参见《 MySQL内部知识:测试同步》。
-DWITH_DEFAULT_FEATURE_SET=bool是否使用中的标志
cmake/build_configurations/feature_set.cmake。-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_type值更好,system因为它可以防止CMake检测和使用系统上安装的较旧或错误的ICU版本。(另一种允许执行相同操作的方法是将设置WITH_ICU为system,并将CMAKE_PREFIX_PATH选项设置为path_name。)
-DWITH_INNODB_EXTRA_DEBUG=bool是否包括额外的InnoDB调试支持。
启用
WITH_INNODB_EXTRA_DEBUG将启用额外的InnoDB调试检查。此选项仅在启用后WITH_DEBUG才能启用。-DWITH_GMOCK=path_namegooglemock发行版的路径,可用于基于Google Test的单元测试。该选项值是分发Zip文件的路径。或者,将
WITH_GMOCK环境变量设置为路径名。也可以使用-DENABLE_DOWNLOADS=1,CMake将从GitHub下载发行版。如果您构建的MySQL没有基于Google Test的单元测试(通过配置wihout
WITH_GMOCK),则CMake将显示一条消息,指示如何下载它。-DWITH_INNODB_MEMCACHED=bool是否生成memcached共享库(
libmemcached.so和innodb_engine.so)。-DWITH_JEMALLOC=bool是否与链接
-ljemalloc。如果启用,内置malloc(),calloc(),realloc(),和free()程序将被禁用。默认值为OFF。该选项是在MySQL 8.0.16中添加的。
-DWITH_KEYRING_TEST=bool是否构建
keyring_file插件随附的测试程序。默认值为OFF。测试文件的源代码位于plugin/keyring/keyring-test目录中。-DWITH_LIBEVENT=stringlibevent使用哪个库。允许的值为bundled(默认值)system,和yes。如果指定system或yes,libevent则使用系统库(如果存在)。如果找不到系统库,libevent则使用捆绑的库。该libevent库是InnoDBmemcached 必需的。-DWITH_LIBWRAP=bool是否包括
libwrap(TCP包装器)支持。-DWITH_LOCK_ORDER=bool是否启用LOCK_ORDER工具。默认情况下,此选项是禁用的,服务器构建不包含任何工具。如果启用了工具,则LOCK_ORDER工具可用,并且可以按“ LOCK_ORDER工具”中所述使用。
注意
WITH_LOCK_ORDER启用该选项后,MySQL构建需要flex程序。MySQL 8.0.17中添加了此选项。
-DWITH_LSAN=bool是否运行不使用AddressSanitizer的LeakSanitizer。默认值为
OFF。该选项是在MySQL 8.0.16中添加的。
-DWITH_LTO=bool如果编译器支持,则是否启用链接时间优化器。默认值为
OFF除非FPROFILE_USE启用。MySQL 8.0.13中添加了此选项。
-DWITH_LZ4=lz4_type该
WITH_LZ4指示的源zlib支持:bundled:使用lz4与发行版捆绑在一起的库。这是默认值。system:使用系统lz4库。如果WITH_LZ4将此值设置为,则不会构建lz4_decompress实用程序。在这种情况下,可以改用system lz4命令。
-DWITH_MSAN=bool是否为支持它的编译器启用MemorySanitizer。默认为关闭。
为了使该选项生效(如果启用),还必须在启用该选项的情况下编译链接到MySQL的所有库。
-DWITH_MECAB={disabled|system|path_name}使用此选项编译MeCab解析器。如果已将MeCab安装到其默认安装目录,请设置
-DWITH_MECAB=system。该system选项适用于使用本机软件包管理实用程序从源或二进制文件执行的MeCab安装。如果已将MeCab安装到自定义安装目录,请指定MeCab安装的路径。例如,-DWITH_MECAB=/opt/mecab。如果该system选项不起作用,则在所有情况下都应指定MeCab安装路径。有关相关信息,请参见“ MeCab全文分析器插件”。
-DWITH_MSCRT_DEBUG=bool是否启用Visual Studio CRT内存泄漏跟踪。默认值为
OFF。-DWITH_MYSQLX=bool是否使用X插件支持进行构建。默认
ON。请参见将MySQL用作文档存储。-DWITH_NUMA=bool明确设置NUMA内存分配策略。CMake
WITH_NUMA根据当前平台是否NUMA支持来设置默认值。对于不支持NUMA的平台,CMake的行为如下:- 如果没有NUMA选项(正常情况),CMake将继续正常运行,仅产生以下警告:NUMA库丢失或所需版本不可用
- 使用
-DWITH_NUMA=ON,CMake会因以下错误而中止:缺少NUMA库或所需的版本不可用
-DWITH_PROTOBUF=protobuf_type使用哪个协议缓冲区包。
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或更高版本。
MySQL 8.0.13中添加了此选项。
-DWITH_LZMA=lzma_type要包括的LZMA库支持的类型。
lzma_type可以是以下值之一:bundled:使用与发行版捆绑在一起的LZMA库。这是默认值。system:使用系统LZMA库。
此选项已在MySQL 8.0.16中删除。
-DWITH_RE2=re2_type要包括的RE2库支持的类型。
re2_type可以是以下值之一:bundled:使用与发行版捆绑在一起的RE2库。这是默认值。system:使用系统RE2库。
从MySQL 8.0.18开始,MySQL不再使用RE2库,并且删除了此选项。
-DWITH_ROUTER=bool是否建立MySQL路由器。默认值为
ON。该选项是在MySQL 8.0.16中添加的。
-DWITH_SSL={ssl_type|path_name}为了支持加密连接,用于生成随机数的熵以及其他与加密相关的操作,必须使用SSL库来构建MySQL。此选项指定要使用的SSL库。
ssl_type可以是以下值之一:system:使用系统OpenSSL库。这是默认值。在macOS和Windows上,使用可以
system配置MySQL以进行构建,就好像调用CMake并path_name指向手动安装的OpenSSL库一样。这是因为它们没有系统SSL库。在macOS上,brew install openssl安装到/usr/local/opt/openssl并system会找到它。在Windows上,它检查%ProgramFiles%/ OpenSSL,%ProgramFiles%/ OpenSSL-Win32,%ProgramFiles%/ OpenSSL-Win64,C:/ OpenSSL,C:/ OpenSSL-Win32和C:/ OpenSSL-Win64。yes:这是的同义词system。
path_name是要使用的OpenSSL安装的路径名。最好使用ssl_type值of,system因为它可以防止CMake检测和使用系统上安装的较旧或错误的OpenSSL版本。(另一种允许执行相同操作的方法是将设置WITH_SSL为system,并将CMAKE_PREFIX_PATH选项设置为path_name。)
有关配置SSL库的更多信息,
-DWITH_SYSTEMD=bool是否启用安装systemd支持文件。默认情况下,此选项是禁用的。启用后,将安装systemd支持文件,并且不会安装诸如mysqld_safe和System V初始化脚本之类的脚本。在systemd不可用的平台上,启用会
WITH_SYSTEMD导致CMake错误。有关使用systemd的更多信息,该部分还包括有关指定
[mysqld_safe]选项组中先前指定的选项的信息。由于在使用systemd时未安装mysqld_safe,因此必须以其他方式指定此类选项。-DWITH_SYSTEM_LIBS=bool此选项充当“保护伞”选项来设置
system的以下任一值CMake的选项未明确设置:WITH_CURL,WITH_EDITLINE,WITH_ICU,WITH_LIBEVENT,WITH_LZ4,WITH_LZMA,WITH_PROTOBUF,WITH_RE2,WITH_SSL,WITH_ZLIB,WITH_ZSTD。-DWITH_TEST_TRACE_PLUGIN=bool是否构建测试协议跟踪客户端插件(请)。默认情况下,此选项是禁用的。除非启用该选项,否则启用此选项无效
WITH_CLIENT_PROTOCOL_TRACING。如果MySQL同时启用了这两个选项,则将使用libmysqlclient内置的测试协议跟踪插件来构建客户端库,并且所有标准MySQL客户端都将加载该插件。但是,即使启用了测试插件,默认情况下它也不起作用。使用环境变量可以控制插件。注意
不要不启用
WITH_TEST_TRACE_PLUGIN,如果你想使用自己的协议跟踪的插件,因为只有一个这样的插件可以在同一时间被加载并出现错误尝试加载第二个选项。如果已经构建了启用了测试协议跟踪插件的MySQL以参见其工作原理,则必须在没有MySQL的情况下重新构建MySQL,然后才能使用自己的插件。有关编写跟踪插件的信息,请参见“编写协议跟踪插件”。
-DWITH_TSAN=bool是否为支持它的编译器启用ThreadSanitizer。默认为关闭。
-DWITH_UBSAN=bool是否为支持它的编译器启用“未定义行为清理器”。默认为关闭。
-DWITH_UNIT_TESTS={ON|OFF}如果启用,请使用单元测试编译MySQL。除非未编译服务器,否则默认值为ON。
-DWITH_UNIXODBC=1为连接器/ 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支持:bundled:使用zlib与发行版捆绑在一起的库。这是默认值。system:使用系统zlib库。如果WITH_ZLIB将此值设置为,则不会构建zlib_decompress实用程序。在这种情况下,可以改为使用系统openssl zlib命令。
-DWITH_ZSTD=zstd_type使用该
zstd算法的连接压缩(请)需要使用zstd库支持构建服务器。该WITH_ZSTD指示的源zstd支持:bundled:使用zstd与发行版捆绑在一起的库。这是默认值。system:使用系统zstd库。
该选项是在MySQL 8.0.18中添加的。
编译器标志
-DCMAKE_C_FLAGS="flags”C编译器的标志。
-DCMAKE_CXX_FLAGS="flags”C + +编译器的标志。
-DWITH_DEFAULT_COMPILER_OPTIONS=bool是否使用中的标志
cmake/build_configurations/compiler_options.cmake。注意
所有的优化标志都是由MySQL构建团队精心选择和测试的。覆盖它们会导致意外的结果,后果自负。
要指定自己的C和C + +编译器标志,对于不影响优化的标志,请使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGSCMake选项。
提供自己的编译器标志时,您可能还需要指定CMAKE_BUILD_TYPE。
例如,要在64位Linux机器上创建32位发行版,请执行以下操作:
mkdir bld cd bld cmake .. -DCMAKE_C_FLAGS=-m32 \ -DCMAKE_CXX_FLAGS=-m32 \ -DCMAKE_BUILD_TYPE=RelWithDebInfo
如果设置影响优化的标志(),则必须设置和/或选项,其中对应于该值。要为默认的构建类型()指定其他优化,请设置和选项。例如,要在具有调试符号的Linux上进行编译,请执行以下操作:-OnumberCMAKE_C_FLAGS_build_typeCMAKE_CXX_FLAGS_build_typebuild_typeCMAKE_BUILD_TYPERelWithDebInfoCMAKE_C_FLAGS_RELWITHDEBINFOCMAKE_CXX_FLAGS_RELWITHDEBINFO-O3
cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
用于编译NDB群集的CMake选项
在构建具有NDB Cluster支持的MySQL 8.0源时,可以使用以下选项。
-DMEMCACHED_HOME=dir_name使用安装在由指示的系统目录中的memcached(1.6版或更高版本)执行构建
dir_name。此安装中在构建中使用的文件包括memcached二进制文件,头文件和库,以及memcached_utilities库和头文件engine_testapp.h。ndbmemcache使用捆绑的内存缓存源(WITH_BUNDLED_MEMCACHED选件)进行构建时,必须将此选项保持未设置状态。换句话说,默认情况下使用捆绑的来源。虽然从外部源编译内存缓存时可以使用其他CMake选项(例如,用于SASL授权和提供
dtrace支持),但当前未为与NDB Cluster捆绑在一起的内存缓存源启用这些选项。-DWITH_BUNDLED_LIBEVENT={ON|OFF}libevent在ndbmemcached支持的情况下构建NDB群集时,请使用NDB群集源中包含的资源。默认启用。OFF导致libevent改为使用系统。-DWITH_BUNDLED_MEMCACHED={ON|OFF}构建NDB群集源树中包含的memcached源,然后在构建
ndbmemcache引擎时使用生成的memcached服务器。在这种情况下,make install将memcached二进制文件放置在安装bin目录中,并将ndbmemcache引擎共享库文件ndb_engine.so放置在安装lib目录中。默认情况下,此选项为ON。
-DWITH_CLASSPATH=path设置用于构建NDB Cluster Connector for Java的类路径。默认为空。如果
-DWITH_NDB_JAVA=OFF使用此选项,则将其忽略。-DWITH_ERROR_INSERT={ON|OFF}在
NDB内核中启用错误注入。仅用于测试;不适用于构建生产二进制文件。默认值为OFF。-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}这是的别名
WITH_NDBCLUSTER。-DWITH_NDBCLUSTER={ON|OFF}建立并链接对mysqld中的
NDB(NDBCLUSTER)存储引擎的支持。默认值为。ON-DWITH_NDBMTD={ON|OFF}构建多线程数据节点可执行文件ndbmtd。默认值为
ON。-DWITH_NDB_BINLOG={ON|OFF}默认情况下,在使用此选项构建的mysqld中启用二进制日志记录。默认为开。
-DWITH_NDB_DEBUG={ON|OFF}启用构建NDB群集二进制文件的调试版本。默认为关闭。
-DWITH_NDB_JAVA={ON|OFF}启用通过Java支持(包括)构建NDB Cluster
ClusterJ。默认情况下,此选项为ON。如果您不希望在Java支持下编译NDB集群,则必须通过指定
-DWITH_NDB_JAVA=OFF在运行CMake时显式禁用它。否则,如果找不到Java,则构建的配置将失败。-DWITH_NDB_PORT=port使NDB群集管理服务器(ndb_mgmd)
port缺省情况下使用此服务器。如果未设置此选项,则默认情况下,结果管理服务器将尝试使用端口1186。-DWITH_NDB_TEST={ON|OFF}如果启用,请包括一组NDB API测试程序。默认为关闭。
-DWITH_PLUGIN_NDBCLUSTER={ON|OFF}别名
WITH_NDBCLUSTER。
处理编译MySQL的问题
解决许多问题的方法包括重新配置。如果要重新配置,请注意以下几点:
- 如果CMake在先前运行之后运行,则它可能使用在其先前调用期间收集的信息。此信息存储在中
CMakeCache.txt。当CMake的启动时,它寻找该文件而且如果它存在读取内容,对假定信息仍然是正确的。重新配置时,该假设无效。 - 每次运行CMake时,都必须再次运行make进行重新编译。但是,您可能要先从以前的版本中删除旧的目标文件,因为它们是使用不同的配置选项编译的。
为了防止使用旧的目标文件或配置信息,请在重新运行CMake之前运行以下命令:
在Unix上:
shell>make clean shell>rm CMakeCache.txt
在Windows上:
shell>devenv MySQL.sln /clean shell>del CMakeCache.txt
如果您在源代码树之外进行构建,请在重新运行CMake之前删除并重新创建构建目录。有关在源代码树之外进行构建的说明,请参见如何使用CMake构建MySQL服务器。
在某些系统上,由于系统包含文件中的差异,可能会出现警告。以下列表描述了在编译MySQL时发现最常见的其他问题:
要定义要使用的C和C + +编译器,可以定义
CC和CXX环境变量。例如:shell>
CC =gcc shell>CXX =g + + shell>export CC CXX要指定自己的C和C + +编译器标志,请使用
CMAKE_C_FLAGS和CMAKE_CXX_FLAGSCMake选项。请参阅编译器标志。要参见您可能需要指定哪些标志,请使用和选项调用mysql_config。
--cflags--cxxflags- 要参见在编译阶段执行了哪些命令,请在使用CMake配置MySQL之后,运行make VERBOSE = 1而不是make。
- 如果编译失败,请检查该
MYSQL_MAINTAINER_MODE选项是否已启用。此模式导致编译器警告变为错误,因此禁用它可能会使编译继续进行。 如果编译失败并出现以下任何错误,则必须将make版本升级到GNU make:
make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment
要么:
make: file `Makefile' line 18: Must be a separator (:
要么:
pthread.h: No such file or directory
已知Solaris和FreeBSD的make程序很麻烦。
已知可以使用 GNU make 3.75。
该
sql_yacc.cc文件是从生成的sql_yacc.yy。通常,不需要构建过程,sql_yacc.cc因为MySQL带有预生成的副本。但是,如果确实需要重新创建它,则可能会遇到此错误:"sql_yacc.yy", line xxx fatal: default action causes potential...
这表明您的yacc版本不足。您可能需要安装bison的最新版本(yacc的GNU版本)并使用它。
低于1.75 的野牛版本可能报告此错误:
sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
实际未超出最大表大小;该错误是由旧版本的野牛中的错误引起的。
有关获取或更新工具的信息,请中的系统要求。
MySQL配置和第三方工具
需要从MySQL源确定MySQL版本的第三方工具可以读取VERSION顶级源目录中的文件。该文件分别列出了版本的各个部分。例如,如果版本为MySQL 8.0.4-rc,则文件如下所示:
MYSQL_VERSION_MAJOR=8 MYSQL_VERSION_MINOR=0 MYSQL_VERSION_PATCH=4 MYSQL_VERSION_EXTRA=-rc
如果来源不是通用可用性(GA)版本,则该MYSQL_VERSION_EXTRA值将为非空。对于示例,该值对应于Release Candidate。
要从版本组件构造一个五位数的数字,请使用以下公式:
MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH
生成MySQL Doxygen文档内容
MySQL源代码包含使用Doxygen编写的内部文档。生成的Doxygen内容可从 https://dev.mysql.com/doc/index-other.html获得。还可以使用以下过程从MySQL源分发本地生成此内容:
安装doxygen 1.8.11或更高版本。可以从http://www.doxygen.nl/获得发行版本。
安装doxygen后,请验证版本号:
shell>
doxygen --version 1.8.13安装 PlantUML。
在Windows上安装PlantUML(在Windows 10上经过测试)时,必须至少以管理员身份运行一次,以便它创建注册表项。打开管理员控制台并运行以下命令:
shell>
jav -jar path-to-plantuml.jar该命令应打开一个GUI窗口,并且在控制台上不返回任何错误。
将
PLANTUML_JAR_PATH环境设置为安装PlantUML的位置。例如:shell>
export PLANTUML_JAR_PATH=path-to-plantuml.jar安装 Graphviz dot命令。
安装Graphviz之后,请验证
dot可用性。例如:shell>
which dot /usr/bin/dot shell>dot -V dot - graphviz version 2.28.0 (20130928.0220)将位置更改为MySQL源代码分发的顶级目录,然后执行以下操作:
首先,执行cmake:
shell>
cd your-mysql-source-directory shell>mkdir bld shell>cd bld shell>cmake ..接下来,生成doxygen文档:
shell>
make doxygen检查错误日志。
doxyerror.log在顶级目录的文件中可用。假设构建成功执行,请使用浏览器参见生成的输出。例如:shell>
firefox doxygen/html/index.html
