• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 从源代码安装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文件:GNU gunzip解压缩发行版,合理的tar解压缩。如果tar程序支持该z选项,则可以解压缩和解压缩文件。

      GNU tar可以工作。某些操作系统随附的标准tar无法解压缩MySQL发行版中的长文件名。您应该下载并安装GNU tar,或者使用GNU tar的预装版本(如果可用)。通常,这可以作为gnutarGTAR,或焦油一个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之外,还必须安装m4m4可从http://www.gnu.org/software/m4/获得。
    注意

    如果必须安装任何程序,请修改您的PATH环境变量以包括程序所在的任何目录。

    如果遇到问题并需要提交错误报告,请按照“如何报告错误或问题”中的说明进行操作。

    用于源代码安装的MySQL布局

    默认情况下,当您从源代码编译MySQL之后安装MySQL时,安装步骤会在下安装文件/usr/local/mysql。安装目录下的组件位置与二进制分发版中的组件位置相同。请参见表2.3,“通用Unix / Linux二进制软件包的MySQL安装布局”和“ Microsoft Windows上的MySQL安装布局”。要配置不同于默认设置的安装位置,请使用“ MySQL源代码配置选项”中所述的选项。

    使用标准源分发版安装MySQL

    要从标准源分发版安装MySQL:

    1. 验证系统是否满足“源安装先决条件”中列出的工具要求。
    2. 使用“如何获取MySQL”中的说明获取分发文件。
    3. 按照本节中的说明配置,构建和安装发行版。
    4. 按照“安装后的设置和测试”中的说明执行安装后的过程。

    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
      

      如果您的tarz支持选件,请使用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存储库,请使用以下过程:

    1. 将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.
      
    2. 克隆操作完成后,本地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
      
    3. 使用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
      
    4. 要参见本地存储库中已签出的分支,请发出git branch命令。克隆MySQL Git存储库时,将自动检出MySQL 5.7分支。星号将5.7分支标识为活动分支。

      ~/mysql-server$ git branch
      * 5.7
      
    5. 要签出另一个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'
      
    6. 运行git branch以确认存在MySQL 8.0分支。MySQL 8.0是您签出的最后一个分支,并带有星号标记,表明它是活动分支。

      ~/mysql-server$ git branch
      5.7
      * 8.0
      
    7. 使用git checkout命令在分支之间切换。例如:

      ~/mysql-server$ git checkout 5.7
      
    8. 要获得在初始设置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服务器。

    9. 克隆MySQL Git存储库并签出要构建的分支后,可以从源代码构建MySQL Server。“使用标准源分发版安装MySQL”中提供了说明,只是您跳过了有关获取和解压缩分发版的部分。

      在生产计算机上从分发源树安装构建时要小心。安装命令可能会覆盖您的实时发行版安装。如果你已经安装了MySQL和不想覆盖它,运行CMake的与价值观CMAKE_INSTALL_PREFIXMYSQL_TCP_PORT以及MYSQL_UNIX_ADDR那些通过生产服务器使用不同的选项。有关防止多个服务器相互干扰的其他信息,请参见“在一台计算机上运行多个MySQL实例”。

      尝试新安装。例如,尝试使新功能崩溃。从运行make test开始。请参见“ MySQL测试套件”。

    配置SSL库支持

    需要SSL库来支持加密连接,用于生成随机数的熵以及其他与加密有关的操作。

    如果从源发行版编译MySQL,则CMake会将发行版配置为默认使用已安装的OpenSSL库。

    要使用OpenSSL进行编译,请使用以下过程:

    1. 确保系统上已安装OpenSSL 1.0.1或更高版本。如果安装的OpenSSL版本低于1.0.1,则CMake在MySQL配置时会产生错误。如果有必要获取OpenSSL,请访问http://www.openssl.org。
    2. CMake的选项确定用于编译MySQL的SSL库(参见第2.9.7“MySQL的源代码,配置选项”)。默认值为,它使用OpenSSL。为了使之明确,请在CMake命令行上指定该选项。例如:WITH_SSL-DWITH_SSL=system

      cmake . -DWITH_SSL=system
      

      该命令将发行版配置为使用已安装的OpenSSL库。或者,要显式指定OpenSSL安装的路径名,请使用以下语法。如果您安装了多个版本的OpenSSL,这将很有用,以防止CMake选择错误的版本:

      cmake . -DWITH_SSL=path_name
      
    3. 编译并安装发行版。

    要检查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_PREFIXMYSQL_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_FLAGSC + +编译器的标志
    CMAKE_C_FLAGSC编译器的标志
    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不建立共享库,编译位置相关的代码OFF8.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是否强制进行源代码构建OFF8.0.14
    FORCE_UNSUPPORTED_COMPILER是否允许不支持的编译器OFF
    FPROFILE_GENERATE是否生成配置文件引导的优化数据OFF8.0.19
    FPROFILE_USE是否使用配置文件引导的优化数据OFF8.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_MYSQLKEYRINGDIRkeyring_file插件数据文件的目录platform specific
    INSTALL_MYSQLSHAREDIR共享数据目录PREFIX/share
    INSTALL_MYSQLTESTDIRmysql-test目录PREFIX/mysql-test
    INSTALL_PKGCONFIGDIRmysqlclient.pc pkg-config文件的目录INSTALL_LIBDIR/pkgconfig
    INSTALL_PLUGINDIR插件目录PREFIX/lib/plugin
    INSTALL_SBINDIR服务器可执行目录PREFIX/bin
    INSTALL_SECURE_FILE_PRIVDIRsecure_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_SEEDLINK_RANDOMIZE选项的种子值mysql
    MAX_INDEXES每张表的最大索引64
    MUTEX_TYPEInnoDB互斥锁类型event
    MYSQLX_TCP_PORTX插件使用的TCP / IP端口号33060
    MYSQLX_UNIX_ADDRX插件使用的Unix套接字文件/tmp/mysqlx.sock
    MYSQL_DATADIR资料目录
    MYSQL_MAINTAINER_MODE是否启用特定于MySQL维护人员的开发环境OFF
    MYSQL_PROJECT_NAMEWindows / OS X项目名称MySQL
    MYSQL_TCP_PORTTCP / IP端口号3306
    MYSQL_UNIX_ADDRUnix套接字文件/tmp/mysql.sock
    ODBC_INCLUDESODBC包含目录
    ODBC_LIB_DIRODBC库目录
    OPTIMIZER_TRACE是否支持优化器跟踪
    REPRODUCIBLE_BUILD格外小心,以独立于构建位置和时间来创建构建结果
    SYSCONFDIR选项文件目录
    SYSTEMD_PID_DIRsystemd下PID文件的目录/var/run/mysqld
    SYSTEMD_SERVICE_NAMEsystemd下的MySQL服务名称mysqld
    TMPDIRtmpdir默认值
    USE_LD_GOLD是否使用GNU黄金链接器ON
    USE_LD_LLD是否使用llvm lld链接器ON8.0.16
    WIN_DEBUG_NO_INLINE是否禁用功能内联OFF
    WITHOUT_xxx_STORAGE_ENGINE从构建中排除存储引擎xxx
    WITH_ANT用于构建GCS Java包装器的Ant路径
    WITH_ASAN启用AddressSanitizerOFF
    WITH_ASAN_SCOPE启用AddressSanitizer -fsanitize-address-use-scope范围Clang标志OFF
    WITH_AUTHENTICATION_LDAP如果无法构建LDAP认证插件,是否报告错误OFF
    WITH_AUTHENTICATION_PAM构建PAM身份验证插件OFF
    WITH_AWS_SDKAmazon Web Services软件开发套件的位置
    WITH_BOOSTBoost库源代码的位置
    WITH_CLIENT_PROTOCOL_TRACING建立客户端协议跟踪框架ON
    WITH_CURLcurl库的位置
    WITH_DEBUG是否包括调试支持OFF
    WITH_DEFAULT_COMPILER_OPTIONS是否使用默认的编译器选项ON
    WITH_DEFAULT_FEATURE_SET是否使用默认功能集ON
    WITH_EDITLINE使用哪个libedit / editline库bundled
    WITH_GMOCKgooglemock分发路径
    WITH_ICUICU支持类型bundled
    WITH_INNODB_EXTRA_DEBUG是否包括对InnoDB的额外调试支持。OFF
    WITH_INNODB_MEMCACHED是否生成memcached共享库。OFF
    WITH_JEMALLOC是否与-ljemalloc链接OFF8.0.16
    WITH_KEYRING_TEST建立密钥环测试程序OFF
    WITH_LIBEVENT使用哪个libevent库bundled
    WITH_LIBWRAP是否包括libwrap(TCP包装器)支持OFF
    WITH_LOCK_ORDER是否启用LOCK_ORDER工具OFF8.0.17
    WITH_LSAN是否在没有AddressSanitizer的情况下运行LeakSanitizerOFF8.0.16
    WITH_LTO启用链接时间优化器OFF8.0.13
    WITH_LZ4LZ4库支持的类型bundled
    WITH_LZMALZMA库支持的类型bundled8.0.16
    WITH_MECAB编译MeCab
    WITH_MSAN启用MemorySanitizerOFF
    WITH_MSCRT_DEBUG启用Visual Studio CRT内存泄漏跟踪OFF
    WITH_MYSQLX是否禁用X协议ON
    WITH_NUMA设置NUMA内存分配策略
    WITH_PROTOBUF使用哪个协议缓冲区包bundled
    WITH_RAPID是否构建快速开发周期插件ON
    WITH_RAPIDJSONRapidJSON支持的类型bundled8.0.13
    WITH_RE2RE2库支持的类型bundled8.0.18
    WITH_ROUTER是否建立MySQL路由器ON8.0.16
    WITH_SSLSSL支持类型system
    WITH_SYSTEMD启用系统支持文件的安装OFF
    WITH_SYSTEM_LIBS设置未明确设置的库选项的系统值OFF
    WITH_TEST_TRACE_PLUGIN构建测试协议跟踪插件OFF
    WITH_TSAN启用ThreadSanitizerOFF
    WITH_UBSAN启用未定义的行为清理器OFF
    WITH_UNIT_TESTS用单元测试编译MySQLON
    WITH_UNIXODBC启用unixODBC支持OFF
    WITH_VALGRIND是否在Valgrind头文件中编译OFF
    WITH_ZLIBzlib支持的类型bundled
    WITH_ZSTDzstd支持的类型bundled8.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_privkeyring_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中。这在大多数情况下都有效,但是在使用资源组功能时,mysqldsetsuid,然后加载程序会忽略RPATH其中包含$ORIGIN。为了克服这个问题,在mysqld的DEB和RPM变体中设置了目录的显式完整路径,因为目标位置是已知的。对于tarball安装,需要使用诸如patchelf之类的工具来修补mysqld 。

    • -DINSTALL_SBINDIR=dir_name

      在哪里安装mysqld服务器。

    • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

      secure_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=val

      LINK_RANDOMIZE选项的种子值。该值是一个字符串。默认值为mysql,是任意选择。

    • -DMYSQL_DATADIR=dir_name

      MySQL数据目录的位置。

      可以使用--datadir选项在服务器启动时设置此值。

    • -DODBC_INCLUDES=dir_name

      ODBC的位置包括目录,并且可以在配置连接器/ ODBC时使用。

    • -DODBC_LIB_DIR=dir_name

      ODBC库目录的位置,可在配置连接器/ 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=name

      MySQL由systemd管理时使用的MySQL服务的名称。默认值为mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。

      除非WITH_SYSTEMD启用,否则将忽略此选项。

    • -DTMPDIR=dir_name

      tmpdir系统变量使用的默认位置。如果未指定,则默认值为P_tmpdirin <stdio.h>

    存储引擎选项

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

    InnoDBMyISAMMERGEMEMORY,和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 sciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8utf8mb4utf16utf16leutf32。允许的字符集在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.cc MySQL源代码树。可以通过搜索“ 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 PROFILESHOW 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_num

      X插件侦听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=bool

      CMake使构建过程与GNU gold链接程序链接(如果可用且未明确禁用)。要禁用此链接器,请指定-DUSE_LD_GOLD=OFF选项。

    • -DUSE_LD_LLD=bool

      CMake使构建过程与 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_name

      Amazon Web Services软件开发套件的位置。

    • -DWITH_BOOST=path_name

      Boost库是构建MySQL所必需的。这些CMake选项可控制库源位置以及是否自动下载:

      • -DWITH_BOOST=path_name指定Boost库目录位置。也可以通过设置BOOST_ROOTWITH_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_type

      curl库的位置。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=NNN

      InnoDB使用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_ICUsystem,并将CMAKE_PREFIX_PATH选项设置为path_name。)
    • -DWITH_INNODB_EXTRA_DEBUG=bool

      是否包括额外的InnoDB调试支持。

      启用WITH_INNODB_EXTRA_DEBUG将启用额外的InnoDB调试检查。此选项仅在启用后WITH_DEBUG才能启用。

    • -DWITH_GMOCK=path_name

      googlemock发行版的路径,可用于基于Google Test的单元测试。该选项值是分发Zip文件的路径。或者,将WITH_GMOCK环境变量设置为路径名。也可以使用-DENABLE_DOWNLOADS=1CMake将从GitHub下载发行版。

      如果您构建的MySQL没有基于Google Test的单元测试(通过配置wihout WITH_GMOCK),则CMake将显示一条消息,指示如何下载它。

    • -DWITH_INNODB_MEMCACHED=bool

      是否生成memcached共享库(libmemcached.soinnodb_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=string

      libevent使用哪个库。允许的值为bundled(默认值)system,和yes。如果指定systemyeslibevent则使用系统库(如果存在)。如果找不到系统库,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内存分配策略。CMakeWITH_NUMA根据当前平台是否NUMA支持来设置默认值。对于不支持NUMA的平台,CMake的行为如下:

      • 如果没有NUMA选项(正常情况),CMake将继续正常运行,仅产生以下警告:NUMA库丢失或所需版本不可用
      • 使用-DWITH_NUMA=ONCMake会因以下错误而中止:缺少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/opensslsystem会找到它。在Windows上,它检查%ProgramFiles%/ OpenSSL%ProgramFiles%/ OpenSSL-Win32%ProgramFiles%/ OpenSSL-Win64C:/ OpenSSLC:/ OpenSSL-Win32C:/ OpenSSL-Win64

        • yes:这是的同义词system
      • path_name是要使用的OpenSSL安装的路径名。最好使用ssl_type值of,system因为它可以防止CMake检测和使用系统上安装的较旧或错误的OpenSSL版本。(另一种允许执行相同操作的方法是将设置WITH_SSLsystem,并将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_CURLWITH_EDITLINEWITH_ICUWITH_LIBEVENTWITH_LZ4WITH_LZMAWITH_PROTOBUFWITH_RE2WITH_SSLWITH_ZLIBWITH_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_FLAGSCMAKE_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}

      libeventndbmemcached支持的情况下构建NDB群集时,请使用NDB群集源中包含的资源。默认启用。OFF导致libevent改为使用系统。

    • -DWITH_BUNDLED_MEMCACHED={ON|OFF}

      构建NDB群集源树中包含的memcached源,然后在构建ndbmemcache引擎时使用生成的memcached服务器。在这种情况下,make installmemcached二进制文件放置在安装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中NDBNDBCLUSTER)存储引擎的支持。默认值为。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_mgmdport缺省情况下使用此服务器。如果未设置此选项,则默认情况下,结果管理服务器将尝试使用端口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 + +编译器,可以定义CCCXX环境变量。例如:

      shell>CC=gcc
      shell>CXX=g	+	+
      shell>export CC CXX
      

      要指定自己的C和C + +编译器标志,请使用CMAKE_C_FLAGSCMAKE_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源分发本地生成此内容:

    1. 安装doxygen 1.8.11或更高版本。可以从http://www.doxygen.nl/获得发行版本。

      安装doxygen后,请验证版本号:

      shell>doxygen --version
      1.8.13
      
    2. 安装 PlantUML。

      在Windows上安装PlantUML(在Windows 10上经过测试)时,必须至少以管理员身份运行一次,以便它创建注册表项。打开管理员控制台并运行以下命令:

      shell>jav -jar path-to-plantuml.jar
      

      该命令应打开一个GUI窗口,并且在控制台上不返回任何错误。

    3. PLANTUML_JAR_PATH环境设置为安装PlantUML的位置。例如:

      shell>export PLANTUML_JAR_PATH=path-to-plantuml.jar
      
    4. 安装 Graphviz dot命令。

      安装Graphviz之后,请验证dot可用性。例如:

      shell>which dot
      /usr/bin/dot
      
      shell>dot -V
      dot - graphviz version 2.28.0 (20130928.0220)
      
    5. 将位置更改为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