Menu:
source-configuration-third-party:: MySQL Configuration and Third-Party Tools
Building MySQL from the source code enables you to customize build parameters, compiler optimizations, and installation location. For a list of systems on which MySQL is known to run, see https://www.mysql.com/support/supportedplatforms/database.html.
Before you proceed with an installation from source, check whether Oracle produces a precompiled binary distribution for your platform and whether it works for you. We put a great deal of effort into ensuring that our binaries are built with the best possible options for optimal performance. Instructions for installing binary distributions are available in *note binary-installation::.
If you are interested in building MySQL from a source distribution using build options the same as or similar to those use by Oracle to produce binary distributions on your platform, obtain a binary distribution, unpack it, and look in the 'docs/INFO_BIN' file, which contains information about how that MySQL distribution was configured and compiled.
Warning:
Building MySQL with nonstandard options may lead to reduced functionality, performance, or security.
File: manual.info.tmp, Node: source-installation-methods, Next: source-installation-prerequisites, Prev: source-installation, Up: source-installation
There are two methods for installing MySQL from source:
Use a standard MySQL source distribution. To obtain a standard distribution, see note getting-mysql::. For instructions on building from a standard distribution, see note installing-source-distribution::.
Standard distributions are available as compressed 'tar' files, Zip archives, or RPM packages. Distribution files have names of the form 'mysql-VERSION.tar.gz', 'mysql-VERSION.zip', or 'mysql-VERSION.rpm', where VERSION is a number like '5.7.44'. File names for source distributions can be distinguished from those for precompiled binary distributions in that source distribution names are generic and include no platform name, whereas binary distribution names include a platform name indicating the type of system for which the distribution is intended (for example, 'pc-linux-i686' or 'winx64').
Use a MySQL development tree. For information on building from one of the development trees, see *note installing-development-tree::.
File: manual.info.tmp, Node: source-installation-prerequisites, Next: source-installation-layout, Prev: source-installation-methods, Up: source-installation
Installation of MySQL from source requires several development tools. Some of these tools are needed no matter whether you use a standard source distribution or a development source tree. Other tool requirements depend on which installation method you use.
To install MySQL from source, the following system requirements must be satisfied, regardless of installation method:
'CMake', which is used as the build framework on all platforms. 'CMake' can be downloaded from http://www.cmake.org.
A good 'make' program. Although some platforms come with their own 'make' implementations, it is highly recommended that you use GNU 'make' 3.75 or later. It may already be available on your system as 'gmake'. GNU 'make' is available from http://www.gnu.org/software/make/.
On Unix-like systems, including Linux, you can check your system's version of 'make' like this:
$> make --version
GNU Make 4.2.1
A working ANSI C++ compiler. See the description of the 'FORCE_UNSUPPORTED_COMPILER' option for some guidelines.
An SSL library is required for support of encrypted connections, entropy for random number generation, and other encryption-related operations. By default, the build uses the OpenSSL library installed on the host system. To specify the library explicitly, use the 'WITH_SSL' option when you invoke 'CMake'. For additional information, see *note source-ssl-library-configuration::.
The Boost C++ libraries are required to build MySQL (but not to use it). Boost 1.59.0 must be installed. To obtain Boost and its installation instructions, visit the official Boost web site (https://www.boost.org). After Boost is installed, tell the build system where the Boost files are placed according to the value set for the 'WITH_BOOST' option when you invoke CMake. For example:
cmake . -DWITH_BOOST=/usr/local/boost_VERSION_NUMBER
Adjust the path as necessary to match your installation.
The ncurses (https://www.gnu.org/software/ncurses/ncurses.html) library.
Sufficient free memory. If you encounter build errors such as 'internal compiler error' when compiling large source files, it may be that you have too little memory. If compiling on a virtual machine, try increasing the memory allocation.
Perl is needed if you intend to run test scripts. Most Unix-like systems include Perl. For Windows, you can use ActiveState Perl (https://www.activestate.com/products/perl/). or Strawberry Perl (https://strawberryperl.com/).
To install MySQL from a standard source distribution, one of the following tools is required to unpack the distribution file:
For a '.tar.gz' compressed 'tar' file: GNU 'gunzip' to uncompress the distribution and a reasonable 'tar' to unpack it. If your 'tar' program supports the 'z' option, it can both uncompress and unpack the file.
GNU 'tar' is known to work. The standard 'tar' provided with some operating systems is not able to unpack the long file names in the MySQL distribution. You should download and install GNU 'tar', or if available, use a preinstalled version of GNU tar. Usually this is available as 'gnutar', 'gtar', or as 'tar' within a GNU or Free Software directory, such as '/usr/sfw/bin' or '/usr/local/bin'. GNU 'tar' is available from https://www.gnu.org/software/tar/.
For a '.zip' Zip archive: 'WinZip' or another tool that can read '.zip' files.
For an '.rpm' RPM package: The 'rpmbuild' program used to build the distribution unpacks it.
To install MySQL from a development source tree, the following additional tools are required:
The Git revision control system is required to obtain the development source code. GitHub Help (https://help.github.com/) provides instructions for downloading and installing Git on different platforms.
'bison' 2.1 or later, available from http://www.gnu.org/software/bison/. (Version 1 is no longer supported.) Use the latest version of 'bison' where possible; if you experience problems, upgrade to a later version, rather than revert to an earlier one.
'bison' is available from http://www.gnu.org/software/bison/. 'bison' for Windows can be downloaded from http://gnuwin32.sourceforge.net/packages/bison.htm. Download the package labeled 'Complete package, excluding sources'. On Windows, the default location for 'bison' is the 'C:Files32' directory. Some utilities may fail to find 'bison' because of the space in the directory name. Also, Visual Studio may simply hang if there are spaces in the path. You can resolve these problems by installing into a directory that does not contain a space (for example 'C:32').
On Solaris Express, 'm4' must be installed in addition to 'bison'. 'm4' is available from http://www.gnu.org/software/m4/.
Note:
If you have to install any programs, modify your 'PATH' environment variable to include any directories in which the programs are located. See *note setting-environment-variables::.
If you run into problems and need to file a bug report, please use the instructions in *note bug-reports::.
File: manual.info.tmp, Node: source-installation-layout, Next: installing-source-distribution, Prev: source-installation-prerequisites, Up: source-installation
By default, when you install MySQL after compiling it from source, the installation step installs files under '/usr/local/mysql'. The component locations under the installation directory are the same as for binary distributions. See note binary-installation-layout::, and note windows-installation-layout::. To configure installation locations different from the defaults, use the options described at *note source-configuration-options::.
File: manual.info.tmp, Node: installing-source-distribution, Next: installing-development-tree, Prev: source-installation-layout, Up: source-installation
To install MySQL from a standard source distribution:
Verify that your system satisfies the tool requirements listed at *note source-installation-prerequisites::.
Obtain a distribution file using the instructions in *note getting-mysql::.
Configure, build, and install the distribution using the instructions in this section.
Perform postinstallation procedures using the instructions in *note postinstallation::.
MySQL uses 'CMake' as the build framework on all platforms. The instructions given here should enable you to produce a working installation. For additional information on using 'CMake' to build MySQL, see How to Build MySQL Server with CMake (https://dev.mysql.com/doc/internals/en/cmake.html).
If you start from a source RPM, use the following command to make a binary RPM that you can install. If you do not have 'rpmbuild', use 'rpm' instead.
$> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
The result is one or more binary RPM packages that you install as indicated in *note linux-installation-rpm::.
The sequence for installation from a compressed 'tar' file or Zip archive source distribution is similar to the process for installing from a generic binary distribution (see *note binary-installation::), except that it is used on all platforms and includes steps to configure and compile the distribution. For example, with a compressed 'tar' file source distribution on Unix, the basic installation command sequence looks like this:
# Preconfiguration setup
$> groupadd mysql
$> useradd -r -g mysql -s /bin/false mysql
# Beginning of source-build specific instructions
$> tar zxvf mysql-VERSION.tar.gz
$> cd mysql-VERSION
$> mkdir bld
$> cd bld
$> cmake ..
$> make
$> make install
# End of source-build specific instructions
# Postinstallation setup
$> cd /usr/local/mysql
$> mkdir mysql-files
$> chown mysql:mysql mysql-files
$> chmod 750 mysql-files
$> bin/mysqld --initialize --user=mysql
$> bin/mysql_ssl_rsa_setup
$> bin/mysqld_safe --user=mysql &
# Next command is optional
$> cp support-files/mysql.server /etc/init.d/mysql.server
A more detailed version of the source-build specific instructions is shown following.
Note:
The procedure shown here does not set up any passwords for MySQL accounts. After following the procedure, proceed to *note postinstallation::, for postinstallation setup and testing.
*note installing-source-distribution-preconfiguration::
*note installing-source-distribution-obtain-distribution::
*note installing-source-distribution-configure-distribution::
*note installing-source-distribution-build-distribution::
*note installing-source-distribution-install-distribution::
*note installing-source-distribution-postinstallation::
Perform Preconfiguration Setup
On Unix, set up the 'mysql' user that owns the database directory and that should be used to run and execute the MySQL server, and the group to which this user belongs. For details, see *note binary-installation-createsysuser::. Then perform the following steps as the 'mysql' user, except as noted.
Obtain and Unpack the Distribution
Pick the directory under which you want to unpack the distribution and change location into it.
Obtain a distribution file using the instructions in *note getting-mysql::.
Unpack the distribution into the current directory:
To unpack a compressed 'tar' file, 'tar' can decompress and unpack the distribution if it has 'z' option support:
$> tar zxvf mysql-VERSION.tar.gz
If your 'tar' does not have 'z' option support, use 'gunzip' to decompress the distribution and 'tar' to unpack it:
$> gunzip < mysql-VERSION.tar.gz | tar xvf -
Alternatively, 'CMake' can decompress and unpack the distribution:
$> cmake -E tar zxvf mysql-VERSION.tar.gz
To unpack a Zip archive, use 'WinZip' or another tool that can read '.zip' files.
Unpacking the distribution file creates a directory named 'mysql-VERSION'.
Configure the Distribution
Change location into the top-level directory of the unpacked distribution:
$> cd mysql-VERSION
Build outside of the source tree to keep the tree clean. If the top-level source directory is named 'mysql-src' under your current working directory, you can build in a directory named 'build' at the same level. Create the directory and go there:
$> mkdir bld
$> cd bld
Configure the build directory. The minimum configuration command includes no options to override configuration defaults:
$> cmake ../mysql-src
The build directory need not be outside the source tree. For example, you can build in a directory named 'build' under the top-level source tree. To do this, starting with 'mysql-src' as your current working directory, create the directory 'build' and then go there:
$> mkdir build
$> cd build
Configure the build directory. The minimum configuration command includes no options to override configuration defaults:
$> cmake ..
If you have multiple source trees at the same level (for example, to build multiple versions of MySQL), the second strategy can be advantageous. The first strategy places all build directories at the same level, which requires that you choose a unique name for each. With the second strategy, you can use the same name for the build directory within each source tree. The following instructions assume this second strategy.
On Windows, specify the development environment. For example, the following commands configure MySQL for 32-bit or 64-bit builds, respectively:
$> cmake .. -G "Visual Studio 12 2013"
$> cmake .. -G "Visual Studio 12 2013 Win64"
On macOS, to use the Xcode IDE:
$> cmake .. -G Xcode
When you run 'Cmake', you might want to add options to the command line. Here are some examples:
'-DBUILD_CONFIG=mysql_release': Configure the source with the same build options used by Oracle to produce binary distributions for official MySQL releases.
'-DCMAKE_INSTALL_PREFIX=DIR_NAME': Configure the distribution for installation under a particular location.
'-DCPACK_MONOLITHIC_INSTALL=1': Cause 'make package' to generate a single installation file rather than multiple files.
'-DWITH_DEBUG=1': Build the distribution with debugging support.
For a more extensive list of options, see *note source-configuration-options::.
To list the configuration options, use one of the following commands:
$> cmake .. -L # overview
$> cmake .. -LH # overview with help text
$> cmake .. -LAH # all params with help text
$> ccmake .. # interactive display
If 'CMake' fails, you might need to reconfigure by running it again with different options. If you do reconfigure, take note of the following:
If 'CMake' is run after it has previously been run, it may use information that was gathered during its previous invocation. This information is stored in 'CMakeCache.txt'. When 'CMake' starts, it looks for that file and reads its contents if it exists, on the assumption that the information is still correct. That assumption is invalid when you reconfigure.
Each time you run 'CMake', you must run 'make' again to recompile. However, you may want to remove old object files from previous builds first because they were compiled using different configuration options.
To prevent old object files or configuration information from being used, run these commands in the build directory on Unix before re-running 'CMake':
$> make clean
$> rm CMakeCache.txt
Or, on Windows:
$> devenv MySQL.sln /clean
$> del CMakeCache.txt
Before asking on the MySQL Community Slack (https://mysqlcommunity.slack.com/), check the files in the 'CMakeFiles' directory for useful information about the failure. To file a bug report, please use the instructions in *note bug-reports::.
Build the Distribution
On Unix:
$> make
$> make VERBOSE=1
The second command sets 'VERBOSE' to show the commands for each compiled source.
Use 'gmake' instead on systems where you are using GNU 'make' and it has been installed as 'gmake'.
On Windows:
$> devenv MySQL.sln /build RelWithDebInfo
If you have gotten to the compilation stage, but the distribution does not build, see note compilation-problems::, for help. If that does not solve the problem, please enter it into our bugs database using the instructions given in note bug-reports::. If you have installed the latest versions of the required tools, and they crash trying to process our configuration files, please report that also. However, if you get a 'command not found' error or a similar problem for required tools, do not report it. Instead, make sure that all the required tools are installed and that your 'PATH' variable is set correctly so that your shell can find them.
Install the Distribution
On Unix:
$> make install
This installs the files under the configured installation directory (by default, '/usr/local/mysql'). You might need to run the command as 'root'.
To install in a specific directory, add a 'DESTDIR' parameter to the command line:
$> make install DESTDIR="/opt/mysql"
Alternatively, generate installation package files that you can install where you like:
$> make package
This operation produces one or more '.tar.gz' files that can be installed like generic binary distribution packages. See *note binary-installation::. If you run 'CMake' with '-DCPACK_MONOLITHIC_INSTALL=1', the operation produces a single file. Otherwise, it produces multiple files.
On Windows, generate the data directory, then create a '.zip' archive installation package:
$> devenv MySQL.sln /build RelWithDebInfo /project initial_database
$> devenv MySQL.sln /build RelWithDebInfo /project package
You can install the resulting '.zip' archive where you like. See *note windows-install-archive::.
Perform Postinstallation Setup
The remainder of the installation process involves setting up the configuration file, creating the core databases, and starting the MySQL server. For instructions, see *note postinstallation::.
Note:
The accounts that are listed in the MySQL grant tables initially have no passwords. After starting the server, you should set up passwords for them using the instructions in *note postinstallation::.
File: manual.info.tmp, Node: installing-development-tree, Next: source-ssl-library-configuration, Prev: installing-source-distribution, Up: source-installation
This section describes how to install MySQL from the latest development source code, which is hosted on GitHub (https://github.com/). To obtain the MySQL Server source code from this repository hosting service, you can set up a local MySQL Git repository.
On GitHub (https://github.com/), MySQL Server and other MySQL projects are found on the MySQL (https://github.com/mysql) page. The MySQL Server project is a single repository that contains branches for several MySQL series.
*note installing-development-tree-prerequisites::
*note installing-development-tree-git::
Prerequisites for Installing from Development Source
To install MySQL from a development source tree, your system must satisfy the tool requirements listed at *note source-installation-prerequisites::.
Setting Up a MySQL Git Repository
To set up a MySQL Git repository on your machine:
Clone the MySQL Git repository to your machine. The following command clones the MySQL Git repository to a directory named 'mysql-server'. The initial download may take some time to complete, depending on the speed of your connection.
$> 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.
When the clone operation completes, the contents of your local MySQL Git repository appear similar to the following:
~> cd mysql-server
~/mysql-server> ls
client extra mysys storage
cmake include packaging strings
CMakeLists.txt INSTALL plugin support-files
components libbinlogevents README testclients
config.h.cmake libchangestreams router unittest
configure.cmake libmysql run_doxygen.cmake utilities
Docs libservices scripts VERSION
Doxyfile-ignored LICENSE share vio
Doxyfile.in man sql win
doxygen_resources mysql-test sql-common
Use the 'git branch -r' command to view the remote tracking branches for the MySQL repository.
~/mysql-server> git branch -r
origin/5.7
origin/8.0
origin/HEAD -> origin/trunk
origin/cluster-7.4
origin/cluster-7.5
origin/cluster-7.6
origin/trunk
To view the branch that is checked out in your local repository, issue the 'git branch' command. When you clone the MySQL Git repository, the latest MySQL branch is checked out automatically. The asterisk identifies the active branch.
~/mysql-server$ git branch
* trunk
To check out an earlier MySQL branch, run the 'git checkout' command, specifying the branch name. For example, to check out the MySQL 5.7 branch:
~/mysql-server$ git checkout 5.7
Checking out files: 100% (9600/9600), done.
Branch 5.7 set up to track remote branch 5.7 from origin.
Switched to a new branch '5.7'
To obtain changes made after your initial setup of the MySQL Git repository, switch to the branch you want to update and issue the 'git pull' command:
~/mysql-server$ git checkout 8.0
~/mysql-server$ git pull
To examine the commit history, use the 'git log' command:
~/mysql-server$ git log
You can also browse commit history and source code on the GitHub MySQL (https://github.com/mysql) site.
If you see changes or code that you have a question about, ask on MySQL Community Slack (https://mysqlcommunity.slack.com/).
After you have cloned the MySQL Git repository and have checked out the branch you want to build, you can build MySQL Server from the source code. Instructions are provided in *note installing-source-distribution::, except that you skip the part about obtaining and unpacking the distribution.
Be careful about installing a build from a distribution source tree on a production machine. The installation command may overwrite your live release installation. If you already have MySQL installed and do not want to overwrite it, run 'CMake' with values for the 'CMAKE_INSTALL_PREFIX', 'MYSQL_TCP_PORT', and 'MYSQL_UNIX_ADDR' options different from those used by your production server. For additional information about preventing multiple servers from interfering with each other, see *note multiple-servers::.
Play hard with your new installation. For example, try to make new features crash. Start by running 'make test'. See The MySQL Test Suite (https://dev.mysql.com/doc/extending-mysql/5.7/en/mysql-test-suite.html).
File: manual.info.tmp, Node: source-ssl-library-configuration, Next: source-configuration-options, Prev: installing-development-tree, Up: source-installation
An SSL library is required for support of encrypted connections, entropy for random number generation, and other encryption-related operations. Your system must support either OpenSSL or yaSSL:
All MySQL Enterprise Edition binary distributions are compiled using OpenSSL. It is not possible to use yaSSL with MySQL Enterprise Edition.
Prior to MySQL 5.7.28, MySQL Community Edition binary distributions are compiled using yaSSL. As of MySQL 5.7.28, support for yaSSL is removed and all MySQL builds use OpenSSL.
Prior to MySQL 5.7.28, MySQL Community Edition source distributions can be compiled using either OpenSSL or yaSSL. As of MySQL 5.7.28, support for yaSSL is removed.
If you compile MySQL from a source distribution, 'CMake' configures the distribution to use the installed OpenSSL library by default.
To compile using OpenSSL, use this procedure:
Ensure that OpenSSL 1.0.1 or newer is installed on your system. If the installed OpenSSL version is older than 1.0.1, 'CMake' produces an error at MySQL configuration time. If it is necessary to obtain OpenSSL, visit http://www.openssl.org.
The 'WITH_SSL' 'CMake' option determines which SSL library to use for compiling MySQL (see *note source-configuration-options::). The default is '-DWITH_SSL=system', which uses OpenSSL. To make this explicit, specify that option. For example:
cmake . -DWITH_SSL=system
That command configures the distribution to use the installed OpenSSL library. Alternatively, to explicitly specify the path name to the OpenSSL installation, use the following syntax. This can be useful if you have multiple versions of OpenSSL installed, to prevent 'CMake' from choosing the wrong one:
cmake . -DWITH_SSL=PATH_NAME
Compile and install the distribution.
To check whether a *note 'mysqld': mysqld. server supports encrypted connections, examine the value of the 'have_ssl' system variable:
mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
If the value is 'YES', the server supports encrypted connections. If the value is 'DISABLED', the server is capable of supporting encrypted connections but was not started with the appropriate '--ssl-XXX' options to enable encrypted connections to be used; see *note using-encrypted-connections::.
To determine whether a server was compiled using OpenSSL or yaSSL, check the existence of any of the system or status variables that are present only for OpenSSL. See *note ssl-libraries::.
File: manual.info.tmp, Node: source-configuration-options, Next: compilation-problems, Prev: source-ssl-library-configuration, Up: source-installation
The 'CMake' program provides a great deal of control over how you configure a MySQL source distribution. Typically, you do this using options on the 'CMake' command line. For information about options supported by 'CMake', run either of these commands in the top-level source directory:
$> cmake . -LH
$> ccmake .
You can also affect 'CMake' using certain environment variables. See *note environment-variables::.
For boolean options, the value may be specified as '1' or 'ON' to enable the option, or as '0' or 'OFF' to disable the option.
Many options configure compile-time defaults that can be overridden at server startup. For example, the 'CMAKE_INSTALL_PREFIX', 'MYSQL_TCP_PORT', and 'MYSQL_UNIX_ADDR' options that configure the default installation base directory location, TCP/IP port number, and Unix socket file can be changed at server startup with the '--basedir', '--port', and '--socket' options for note 'mysqld': mysqld. Where applicable, configuration option descriptions indicate the corresponding note 'mysqld': mysqld. startup option.
The following sections provide more information about 'CMake' options.
*note cmake-option-reference::
*note cmake-general-options::
*note cmake-installation-layout-options::
*note option_cmake_storage_engine_options::
*note cmake-feature-options::
*note cmake-compiler-flags::
*note cmake-mysql-cluster-options::
CMake Option Reference
The following table shows the available 'CMake' options. In the 'Default' column, 'PREFIX' stands for the value of the 'CMAKE_INSTALL_PREFIX' option, which specifies the installation base directory. This value is used as the parent location for several of the installation subdirectories.
MySQL Source-Configuration Option Reference (CMake)
Formats Description Default IntroducedRemoved
'BUILD_CONFIG'
Use same build options as official releases
'CMAKE_BUILD_TYPE'
Type of build to 'RelWithDebInfo' produce
'CMAKE_CXX_FLAGS'
Flags for C++ Compiler
'CMAKE_C_FLAGS'
Flags for C Compiler
'CMAKE_INSTALL_PREFIX'
Installation base '/usr/local/mysql' directory
'COMPILATION_COMMENT'
Comment about compilation environment
'CPACK_MONOLITHIC_INSTALL'
Whether package 'OFF' build produces
single file
'DEFAULT_CHARSET'
The default server 'latin1' character set
'DEFAULT_COLLATION'
The default server 'latin1_swedish_ci' collation
'DISABLE_PSI_COND'
Exclude Performance 'OFF' Schema condition
instrumentation
'DISABLE_PSI_FILE'
Exclude Performance 'OFF' Schema file
instrumentation
'DISABLE_PSI_IDLE'
Exclude Performance 'OFF' Schema idle
instrumentation
'DISABLE_PSI_MEMORY'
Exclude Performance 'OFF' Schema memory
instrumentation
'DISABLE_PSI_METADATA'
Exclude Performance 'OFF' Schema metadata
instrumentation
'DISABLE_PSI_MUTEX'
Exclude Performance 'OFF' Schema mutex
instrumentation
'DISABLE_PSI_PS'
Exclude the 'OFF' performance schema
prepared statements
'DISABLE_PSI_RWLOCK'
Exclude Performance 'OFF' Schema rwlock
instrumentation
'DISABLE_PSI_SOCKET'
Exclude Performance 'OFF' Schema socket
instrumentation
'DISABLE_PSI_SP'
Exclude Performance 'OFF' Schema stored
program instrumentation
'DISABLE_PSI_STAGE'
Exclude Performance 'OFF' Schema stage
instrumentation
'DISABLE_PSI_STATEMENT'
Exclude Performance 'OFF' Schema statement
instrumentation
'DISABLE_PSI_STATEMENT_DIGEST'
Exclude Performance 'OFF' Schema
statements_digest instrumentation
'DISABLE_PSI_TABLE'
Exclude Performance 'OFF' Schema table
instrumentation
'DISABLE_PSI_THREAD'
Exclude the 'OFF' performance schema
thread instrumentation
'DISABLE_PSI_TRANSACTION'
Exclude the 'OFF' performance schema
transaction instrumentation
'DOWNLOAD_BOOST'
Whether to download 'OFF' the Boost library
'DOWNLOAD_BOOST_TIMEOUT'
Timeout in seconds '600' for downloading the
Boost library
'ENABLED_LOCAL_INFILE'
Whether to enable 'OFF' LOCAL for LOAD DATA
'ENABLED_PROFILING'
Whether to enable 'ON' query profiling code
'ENABLE_DOWNLOADS'
Whether to download 'OFF' optional files
'ENABLE_DTRACE'
Whether to include DTrace support
'ENABLE_GCOV'
Whether to include gcov support
'ENABLE_GPROF'
Enable gprof 'OFF' (optimized Linux
builds only)
'FORCE_UNSUPPORTED_COMPILER'
Whether to permit 'OFF' unsupported
compilers
'IGNORE_AIO_CHECK'
With 'OFF' -DBUILD_CONFIG=mysql_release, ignore libaio check
'INSTALL_BINDIR'
User executables 'PREFIX/bin' directory
'INSTALL_DOCDIR'
Documentation 'PREFIX/docs' directory
'INSTALL_DOCREADMEDIR'
README file 'PREFIX' directory
'INSTALL_INCLUDEDIR'
Header file 'PREFIX/include' directory
'INSTALL_INFODIR'
Info file directory 'PREFIX/docs'
'INSTALL_LAYOUT'
Select predefined 'STANDALONE' installation layout
'INSTALL_LIBDIR'
Library file 'PREFIX/lib' directory
'INSTALL_MANDIR'
Manual page 'PREFIX/man' directory
'INSTALL_MYSQLKEYRINGDIR'
Directory for 'platform specific' 5.7.11 keyring_file plugin
data file
'INSTALL_MYSQLSHAREDIR'
Shared data 'PREFIX/share' directory
'INSTALL_MYSQLTESTDIR'
mysql-test directory 'PREFIX/mysql-test'
'INSTALL_PKGCONFIGDIR'
Directory for 'INSTALL_LIBDIR/pkgconfig' mysqlclient.pc
pkg-config file
'INSTALL_PLUGINDIR'
Plugin directory 'PREFIX/lib/plugin'
'INSTALL_SBINDIR'
Server executable 'PREFIX/bin' directory
'INSTALL_SCRIPTDIR'
Scripts directory 'PREFIX/scripts'
'INSTALL_SECURE_FILE_PRIVDIR'
secure_file_priv 'platform specific' default value
'INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR'
secure_file_priv default value for libmysqld
'INSTALL_SHAREDIR'
aclocal/mysql.m4 'PREFIX/share' installation
directory
'INSTALL_SUPPORTFILESDIR'
Extra support files 'PREFIX/support-files' directory
'MAX_INDEXES'
Maximum indexes per '64' table
'MEMCACHED_HOME'
Path to memcached; '[none]' 5.7.33 obsolete
'MUTEX_TYPE'
InnoDB mutex type 'event'
'MYSQLX_TCP_PORT'
TCP/IP port number '33060' 5.7.17 used by X Plugin
'MYSQLX_UNIX_ADDR'
Unix socket file '/tmp/mysqlx.sock' 5.7.15 used by X Plugin
'MYSQL_DATADIR'
Data directory
'MYSQL_MAINTAINER_MODE'
Whether to enable 'OFF' MySQL
maintainer-specific development environment
'MYSQL_PROJECT_NAME'
Windows/macOS 'MySQL' project name
'MYSQL_TCP_PORT'
TCP/IP port number '3306'
'MYSQL_UNIX_ADDR'
Unix socket file '/tmp/mysql.sock'
'ODBC_INCLUDES'
ODBC includes directory
'ODBC_LIB_DIR'
ODBC library directory
'OPTIMIZER_TRACE'
Whether to support optimizer tracing
'REPRODUCIBLE_BUILD'
Take extra care to 5.7.19 create a build
result independent of build location and time
'SUNPRO_CXX_LIBRARY'
Client link library on Solaris 10+
'SYSCONFDIR'
Option file directory
'SYSTEMD_PID_DIR'
Directory for PID '/var/run/mysqld' file under systemd
'SYSTEMD_SERVICE_NAME'
Name of MySQL 'mysqld' service under
systemd
'TMPDIR'
tmpdir default value
'WIN_DEBUG_NO_INLINE'
Whether to disable 'OFF' function inlining
'WITHOUT_SERVER'
Do not build the 'OFF' server; internal use
only
'WITHOUT_xxx_STORAGE_ENGINE'
Exclude storage engine xxx from build
'WITH_ASAN'
Enable 'OFF' AddressSanitizer
'WITH_ASAN_SCOPE'
Enable 'OFF' 5.7.21 AddressSanitizer
-fsanitize-address-use-after-scope Clang flag
'WITH_AUTHENTICATION_LDAP'
Whether to report 'OFF' 5.7.19 error if LDAP
authentication plugins cannot be built
'WITH_AUTHENTICATION_PAM'
Build PAM 'OFF' authentication
plugin
'WITH_AWS_SDK'
Location of Amazon 5.7.19 Web Services
software development kit
'WITH_BOOST'
The location of the Boost library sources
'WITH_BUNDLED_LIBEVENT'
Use bundled libevent 'ON' 5.7.33 when building
ndbmemcache; obsolete
'WITH_BUNDLED_MEMCACHED'
Use bundled 'ON' 5.7.33 memcached when
building ndbmemcache; obsolete
'WITH_CLASSPATH'
Classpath to use '' when building MySQL
Cluster Connector for Java. Default is an empty string.
'WITH_CLIENT_PROTOCOL_TRACING'
Build client-side 'ON' protocol tracing
framework
'WITH_CURL'
Location of curl 5.7.19 library
'WITH_DEBUG'
Whether to include 'OFF' debugging support
'WITH_DEFAULT_COMPILER_OPTIONS'
Whether to use 'ON' default compiler
options
'WITH_DEFAULT_FEATURE_SET'
Whether to use 'ON' default feature set
'WITH_EDITLINE'
Which 'bundled' libedit/editline
library to use
'WITH_EMBEDDED_SERVER'
Whether to build 'OFF' embedded server
'WITH_EMBEDDED_SHARED_LIBRARY'
Whether to build a 'OFF' shared embedded
server library
'WITH_ERROR_INSERT'
Enable error 'OFF' injection in the NDB
storage engine. Should not be used for building binaries intended for production.
'WITH_EXTRA_CHARSETS'
Which extra 'all' character sets to
include
'WITH_GMOCK'
Path to googlemock distribution
'WITH_INNODB_EXTRA_DEBUG'
Whether to include 'OFF' extra debugging
support for InnoDB.
'WITH_INNODB_MEMCACHED'
Whether to generate 'OFF' memcached shared
libraries.
'WITH_KEYRING_TEST'
Build the keyring 'OFF' 5.7.11 test program
'WITH_LDAP'
Internal use only 5.7.29
'WITH_LIBEVENT'
Which libevent 'bundled' library to use
'WITH_LIBWRAP'
Whether to include 'OFF' libwrap (TCP
wrappers) support
'WITH_LZ4'
Type of LZ4 library 'bundled' 5.7.14 support
'WITH_MECAB'
Compiles MeCab
'WITH_MSAN'
Enable 'OFF' MemorySanitizer
'WITH_MSCRT_DEBUG'
Enable Visual Studio 'OFF' CRT memory leak
tracing
'WITH_NDBAPI_EXAMPLES'
Build API example 'OFF' programs.
'WITH_NDBCLUSTER'
NDB 8.0.30 and 'ON' earlier: Build NDB
storage engine. NDB 8.0.31 and later: Deprecated; use WITH_NDB instead
'WITH_NDBCLUSTER_STORAGE_ENGINE'
Prior to NDB 8.0.31, 'ON' this was for
internal use only. NDB 8.0.31 and later: toggles (only) inclusion of NDBCLUSTER storage engine
'WITH_NDBMTD'
Build multithreaded 'ON' data node binary
'WITH_NDB_BINLOG'
Enable binary 'ON' logging by default
by mysqld.
'WITH_NDB_DEBUG'
Produce a debug 'OFF' build for testing or
troubleshooting.
'WITH_NDB_JAVA'
Enable building of 'ON' Java and ClusterJ
support. Enabled by default. Supported in MySQL Cluster only.
'WITH_NDB_PORT'
Default port used by '[none]' a management server
built with this option. If this option was not used to build it, the management server's default port is 1186.
'WITH_NDB_TEST'
Include NDB API test 'OFF' programs.
'WITH_NUMA'
Set NUMA memory 5.7.17 allocation policy
'WITH_PROTOBUF'
Which Protocol 'bundled' 5.7.12 Buffers package to
use
'WITH_RAPID'
Whether to build 'ON' 5.7.12 rapid development
cycle plugins
'WITH_SASL'
Internal use only 5.7.29
'WITH_SSL'
Type of SSL support 'system'
'WITH_SYSTEMD'
Enable installation 'OFF' of systemd support
files
'WITH_TEST_TRACE_PLUGIN'
Build test protocol 'OFF' trace plugin
'WITH_UBSAN'
Enable Undefined 'OFF' Behavior Sanitizer
'WITH_UNIT_TESTS'
Compile MySQL with 'ON' unit tests
'WITH_UNIXODBC'
Enable unixODBC 'OFF' support
'WITH_VALGRIND'
Whether to compile 'OFF' in Valgrind header
files
'WITH_ZLIB'
Type of zlib support 'bundled'
'WITH_xxx_STORAGE_ENGINE'
Compile storage engine xxx statically into server
General Options
'-DBUILD_CONFIG=mysql_release'
This option configures a source distribution with the same build options used by Oracle to produce binary distributions for official MySQL releases.
'-DCMAKE_BUILD_TYPE=TYPE'
The type of build to produce:
* 'RelWithDebInfo': Enable optimizations and generate debugging
information. This is the default MySQL build type.
* 'Debug': Disable optimizations and generate debugging
information. This build type is also used if the 'WITH_DEBUG'
option is enabled. That is, '-DWITH_DEBUG=1' has the same
effect as '-DCMAKE_BUILD_TYPE=Debug'.
'-DCPACK_MONOLITHIC_INSTALL=BOOL'
This option affects whether the 'make package' operation produces multiple installation package files or a single file. If disabled, the operation produces multiple installation package files, which may be useful if you want to install only a subset of a full MySQL installation. If enabled, it produces a single file for installing everything.
Installation Layout Options
The 'CMAKE_INSTALL_PREFIX' option indicates the base installation directory. Other options with names of the form 'INSTALL_XXX' that indicate component locations are interpreted relative to the prefix and their values are relative pathnames. Their values should not include the prefix.
'-DCMAKE_INSTALL_PREFIX=DIR_NAME'
The installation base directory.
This value can be set at server startup using the '--basedir' option.
'-DINSTALL_BINDIR=DIR_NAME'
Where to install user programs.
'-DINSTALL_DOCDIR=DIR_NAME'
Where to install documentation.
'-DINSTALL_DOCREADMEDIR=DIR_NAME'
Where to install 'README' files.
'-DINSTALL_INCLUDEDIR=DIR_NAME'
Where to install header files.
'-DINSTALL_INFODIR=DIR_NAME'
Where to install Info files.
'-DINSTALL_LAYOUT=NAME'
Select a predefined installation layout:
* 'STANDALONE': Same layout as used for '.tar.gz' and '.zip'
packages. This is the default.
* 'RPM': Layout similar to RPM packages.
* 'SVR4': Solaris package layout.
* 'DEB': DEB package layout (experimental).
You can select a predefined layout but modify individual component installation locations by specifying other options. For example:
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
The 'INSTALL_LAYOUT' value determines the default value of the 'secure_file_priv', 'keyring_encrypted_file_data', and 'keyring_file_data' system variables. See the descriptions of those variables in note server-system-variables::, and note keyring-system-variables::.
'-DINSTALL_LIBDIR=DIR_NAME'
Where to install library files.
'-DINSTALL_MANDIR=DIR_NAME'
Where to install manual pages.
'-DINSTALL_MYSQLKEYRINGDIR=DIR_PATH'
The default directory to use as the location of the 'keyring_file' plugin data file. The default value is platform specific and depends on the value of the 'INSTALL_LAYOUT' 'CMake' option; see the description of the 'keyring_file_data' system variable in *note server-system-variables::.
This option was added in MySQL 5.7.11.
'-DINSTALL_MYSQLSHAREDIR=DIR_NAME'
Where to install shared data files.
'-DINSTALL_MYSQLTESTDIR=DIR_NAME'
Where to install the 'mysql-test' directory. To suppress installation of this directory, explicitly set the option to the empty value ('-DINSTALL_MYSQLTESTDIR=').
'-DINSTALL_PKGCONFIGDIR=DIR_NAME'
The directory in which to install the 'mysqlclient.pc' file for use by 'pkg-config'. The default value is 'INSTALL_LIBDIR/pkgconfig', unless 'INSTALL_LIBDIR' ends with '/mysql', in which case that is removed first.
'-DINSTALL_PLUGINDIR=DIR_NAME'
The location of the plugin directory.
This value can be set at server startup with the '--plugin_dir' option.
'-DINSTALL_SBINDIR=DIR_NAME'
Where to install the *note 'mysqld': mysqld. server.
'-DINSTALL_SCRIPTDIR=DIR_NAME'
Where to install *note 'mysql_install_db': mysql-install-db.
'-DINSTALL_SECURE_FILE_PRIVDIR=DIR_NAME'
The default value for the 'secure_file_priv' system variable. The default value is platform specific and depends on the value of the 'INSTALL_LAYOUT' 'CMake' option; see the description of the 'secure_file_priv' system variable in *note server-system-variables::.
To set the value for the 'libmysqld' embedded server, use 'INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR'.
'-DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=DIR_NAME'
The default value for the 'secure_file_priv' system variable, for the 'libmysqld' embedded server.
Note:
The 'libmysqld' embedded server library is deprecated as of MySQL 5.7.19; expect it to be removed in MySQL 8.0.
'-DINSTALL_SHAREDIR=DIR_NAME'
Where to install 'aclocal/mysql.m4'.
'-DINSTALL_SUPPORTFILESDIR=DIR_NAME'
Where to install extra support files.
'-DMYSQL_DATADIR=DIR_NAME'
The location of the MySQL data directory.
This value can be set at server startup with the '--datadir' option.
'-DODBC_INCLUDES=DIR_NAME'
The location of the ODBC includes directory, which may be used while configuring Connector/ODBC.
'-DODBC_LIB_DIR=DIR_NAME'
The location of the ODBC library directory, which may be used while configuring Connector/ODBC.
'-DSYSCONFDIR=DIR_NAME'
The default 'my.cnf' option file directory.
This location cannot be set at server startup, but you can start the server with a given option file using the '--defaults-file=FILE_NAME' option, where FILE_NAME is the full path name to the file.
'-DSYSTEMD_PID_DIR=DIR_NAME'
The name of the directory in which to create the PID file when MySQL is managed by systemd. The default is '/var/run/mysqld'; this might be changed implicitly according to the 'INSTALL_LAYOUT' value.
This option is ignored unless 'WITH_SYSTEMD' is enabled.
'-DSYSTEMD_SERVICE_NAME=NAME'
The name of the MySQL service to use when MySQL is managed by 'systemd'. The default is 'mysqld'; this might be changed implicitly according to the 'INSTALL_LAYOUT' value.
This option is ignored unless 'WITH_SYSTEMD' is enabled.
'-DTMPDIR=DIR_NAME'
The default location to use for the 'tmpdir' system variable. If unspecified, the value defaults to 'P_tmpdir' in '<stdio.h>'.
Storage Engine Options
Storage engines are built as plugins. You can build a plugin as a static module (compiled into the server) or a dynamic module (built as a dynamic library that must be installed into the server using the *note 'INSTALL PLUGIN': install-plugin. statement or the '--plugin-load' option before it can be used). Some plugins might not support static or dynamic building.
The note 'InnoDB': innodb-storage-engine, note 'MyISAM': myisam-storage-engine, note 'MERGE': merge-storage-engine, note 'MEMORY': memory-storage-engine, and *note 'CSV': csv-storage-engine. engines are mandatory (always compiled into the server) and need not be installed explicitly.
To compile a storage engine statically into the server, use '-DWITH_ENGINE_STORAGE_ENGINE=1'. Some permissible ENGINE values are 'ARCHIVE', 'BLACKHOLE', 'EXAMPLE', 'FEDERATED', and 'PARTITION' (partitioning support). Examples:
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
To build MySQL with support for NDB Cluster, use the 'WITH_NDBCLUSTER' option.
Note:
'WITH_NDBCLUSTER' is supported only when building NDB Cluster using the NDB Cluster sources. It cannot be used to enable clustering support in other MySQL source trees or distributions. In NDB Cluster source distributions, it is enabled by default. See note mysql-cluster-install-linux-source::, and note mysql-cluster-install-windows-source::, for more information.
Note:
It is not possible to compile without Performance Schema support. If it is desired to compile without particular types of instrumentation, that can be done with the following 'CMake' options:
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
For example, to compile without mutex instrumentation, configure MySQL using '-DDISABLE_PSI_MUTEX=1'.
To exclude a storage engine from the build, use '-DWITH_ENGINE_STORAGE_ENGINE=0'. Examples:
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
-DWITH_PARTITION_STORAGE_ENGINE=0
It is also possible to exclude a storage engine from the build using '-DWITHOUT_ENGINE_STORAGE_ENGINE=1' (but '-DWITH_ENGINE_STORAGE_ENGINE=0' is preferred). Examples:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
If neither '-DWITH_ENGINE_STORAGE_ENGINE' nor '-DWITHOUT_ENGINE_STORAGE_ENGINE' are specified for a given storage engine, the engine is built as a shared module, or excluded if it cannot be built as a shared module.
Feature Options
'-DCOMPILATION_COMMENT=STRING'
A descriptive comment about the compilation environment.
'-DDEFAULT_CHARSET=CHARSET_NAME'
The server character set. By default, MySQL uses the 'latin1' ('cp1252' West European) character set.
CHARSET_NAME may be one of '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'. The permissible character sets are listed in the 'cmake/character_sets.cmake' file as the value of 'CHARSETS_AVAILABLE'.
This value can be set at server startup with the '--character-set-server' option.
'-DDEFAULT_COLLATION=COLLATION_NAME'
The server collation. By default, MySQL uses 'latin1_swedish_ci'. Use the *note 'SHOW COLLATION': show-collation. statement to determine which collations are available for each character set.
This value can be set at server startup with the '--collation_server' option.
'-DDISABLE_PSI_COND=BOOL'
Whether to exclude the Performance Schema condition instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_FILE=BOOL'
Whether to exclude the Performance Schema file instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_IDLE=BOOL'
Whether to exclude the Performance Schema idle instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_MEMORY=BOOL'
Whether to exclude the Performance Schema memory instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_METADATA=BOOL'
Whether to exclude the Performance Schema metadata instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_MUTEX=BOOL'
Whether to exclude the Performance Schema mutex instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_RWLOCK=BOOL'
Whether to exclude the Performance Schema rwlock instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_SOCKET=BOOL'
Whether to exclude the Performance Schema socket instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_SP=BOOL'
Whether to exclude the Performance Schema stored program instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_STAGE=BOOL'
Whether to exclude the Performance Schema stage instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_STATEMENT=BOOL'
Whether to exclude the Performance Schema statement instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_STATEMENT_DIGEST=BOOL'
Whether to exclude the Performance Schema statement digest instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_TABLE=BOOL'
Whether to exclude the Performance Schema table instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_PS=BOOL'
Exclude the Performance Schema prepared statements instances instrumentation. The default is 'OFF' (include).
'-DDISABLE_PSI_THREAD=BOOL'
Exclude the Performance Schema thread instrumentation. The default is 'OFF' (include).
Only disable threads when building without any instrumentation, because other instrumentations have a dependency on threads.
'-DDISABLE_PSI_TRANSACTION=BOOL'
Exclude the Performance Schema transaction instrumentation. The default is 'OFF' (include).
'-DDOWNLOAD_BOOST=BOOL'
Whether to download the Boost library. The default is 'OFF'.
See the 'WITH_BOOST' option for additional discussion about using Boost.
'-DDOWNLOAD_BOOST_TIMEOUT=SECONDS'
The timeout in seconds for downloading the Boost library. The default is 600 seconds.
See the 'WITH_BOOST' option for additional discussion about using Boost.
'-DENABLE_DOWNLOADS=BOOL'
Whether to download optional files. For example, with this option enabled, 'CMake' downloads the Google Test distribution that is used by the test suite to run unit tests.
'-DENABLE_DTRACE=BOOL'
Whether to include support for DTrace probes. For information about DTrace, wee *note dba-dtrace-server::
This option is deprecated because support for DTrace is deprecated in MySQL 5.7 and is removed in MySQL 8.0.
'-DENABLE_GCOV=BOOL'
Whether to include 'gcov' support (Linux only).
'-DENABLE_GPROF=BOOL'
Whether to enable 'gprof' (optimized Linux builds only).
'-DENABLED_LOCAL_INFILE=BOOL'
This option controls the compiled-in default 'LOCAL' capability for the MySQL client library. Clients that make no explicit arrangements therefore have 'LOCAL' capability disabled or enabled according to the 'ENABLED_LOCAL_INFILE' setting specified at MySQL build time.
By default, the client library in MySQL binary distributions is compiled with 'ENABLED_LOCAL_INFILE' disabled. (Prior to MySQL 5.7.6, it was enabled by default.) If you compile MySQL from source, configure it with 'ENABLED_LOCAL_INFILE' disabled or enabled based on whether clients that make no explicit arrangements should have 'LOCAL' capability disabled or enabled, respectively.
'ENABLED_LOCAL_INFILE' controls the default for client-side 'LOCAL' capability. For the server, the 'local_infile' system variable controls server-side 'LOCAL' capability. To explicitly cause the server to refuse or permit note 'LOAD DATA LOCAL': load-data. statements (regardless of how client programs and libraries are configured at build time or runtime), start note 'mysqld': mysqld. with '--local-infile' disabled or enabled, respectively. 'local_infile' can also be set at runtime. See *note load-data-local-security::.
'-DENABLED_PROFILING=BOOL'
Whether to enable query profiling code (for the note 'SHOW PROFILE': show-profile. and note 'SHOW PROFILES': show-profiles. statements).
'-DFORCE_UNSUPPORTED_COMPILER=BOOL'
By default, 'CMake' checks for minimum versions of supported compilers: Visual Studio 2013 (Windows); GCC 4.4 or Clang 3.3 (Linux); Developer Studio 12.5 (Solaris server); Developer Studio 12.2 or GCC 4.4 (Solaris client library); Clang 3.3 (macOS), Clang 3.3 (FreeBSD). To disable this check, use '-DFORCE_UNSUPPORTED_COMPILER=ON'.
'-DIGNORE_AIO_CHECK=BOOL'
If the '-DBUILD_CONFIG=mysql_release' option is given on Linux, the 'libaio' library must be linked in by default. If you do not have 'libaio' or do not want to install it, you can suppress the check for it by specifying '-DIGNORE_AIO_CHECK=1'.
'-DMAX_INDEXES=NUM'
The maximum number of indexes per table. The default is 64. The maximum is 255. Values smaller than 64 are ignored and the default of 64 is used.
'-DMYSQL_MAINTAINER_MODE=BOOL'
Whether to enable a MySQL maintainer-specific development environment. If enabled, this option causes compiler warnings to become errors.
'-DMUTEX_TYPE=TYPE'
The mutex type used by 'InnoDB'. Options include:
* 'event': Use event mutexes. This is the default value and the
original 'InnoDB' mutex implementation.
* 'sys': Use POSIX mutexes on UNIX systems. Use
'CRITICAL_SECTION' objects on Windows, if available.
* 'futex': Use Linux futexes instead of condition variables to
schedule waiting threads.
'-DMYSQLX_TCP_PORT=PORT_NUM'
The port number on which X Plugin listens for TCP/IP connections. The default is 33060.
This value can be set at server startup with the 'mysqlx_port' system variable.
'-DMYSQLX_UNIX_ADDR=FILE_NAME'
The Unix socket file path on which the server listens for X Plugin socket connections. This must be an absolute path name. The default is '/tmp/mysqlx.sock'.
This value can be set at server startup with the 'mysqlx_port' system variable.
'-DMYSQL_PROJECT_NAME=NAME'
For Windows or macOS, the project name to incorporate into the project file name.
'-DMYSQL_TCP_PORT=PORT_NUM'
The port number on which the server listens for TCP/IP connections. The default is 3306.
This value can be set at server startup with the '--port' option.
'-DMYSQL_UNIX_ADDR=FILE_NAME'
The Unix socket file path on which the server listens for socket connections. This must be an absolute path name. The default is '/tmp/mysql.sock'.
This value can be set at server startup with the '--socket' option.
'-DOPTIMIZER_TRACE=BOOL'
Whether to support optimizer tracing. See *note optimizer-tracing::.
'-DREPRODUCIBLE_BUILD=BOOL'
For builds on Linux systems, this option controls whether to take extra care to create a build result independent of build location and time.
This option was added in MySQL 5.7.19.
'-DWIN_DEBUG_NO_INLINE=BOOL'
Whether to disable function inlining on Windows. The default is 'OFF' (inlining enabled).
'-DWITH_ASAN=BOOL'
Whether to enable the AddressSanitizer, for compilers that support it. The default is 'OFF'.
'-DWITH_ASAN_SCOPE=BOOL'
Whether to enable the AddressSanitizer '-fsanitize-address-use-after-scope' Clang flag for use-after-scope detection. The default is off. To use this option, '-DWITH_ASAN' must also be enabled.
'-DWITH_AUTHENTICATION_LDAP=BOOL'
Whether to report an error if the LDAP authentication plugins cannot be built:
* If this option is disabled (the default), the LDAP plugins are
built if the required header files and libraries are found.
If they are not, 'CMake' displays a note about it.
* If this option is enabled, a failure to find the required
header file and libraries causes CMake to produce an error,
preventing the server from being built.
For information about LDAP authentication, see *note ldap-pluggable-authentication::. This option was added in MySQL 5.7.19.
'-DWITH_AUTHENTICATION_PAM=BOOL'
Whether to build the PAM authentication plugin, for source trees that include this plugin. (See *note pam-pluggable-authentication::.) If this option is specified and the plugin cannot be compiled, the build fails.
'-DWITH_AWS_SDK=PATH_NAME'
The location of the Amazon Web Services software development kit.
This option was added in MySQL 5.7.19.
'-DWITH_BOOST=PATH_NAME'
The Boost library is required to build MySQL. These 'CMake' options enable control over the library source location, and whether to download it automatically:
* '-DWITH_BOOST=PATH_NAME' specifies the Boost library directory
location. It is also possible to specify the Boost location
by setting the 'BOOST_ROOT' or 'WITH_BOOST' environment
variable.
As of MySQL 5.7.11, '-DWITH_BOOST=system' is also permitted
and indicates that the correct version of Boost is installed
on the compilation host in the standard location. In this
case, the installed version of Boost is used rather than any
version included with a MySQL source distribution.
* '-DDOWNLOAD_BOOST=BOOL' specifies whether to download the
Boost source if it is not present in the specified location.
The default is 'OFF'.
* '-DDOWNLOAD_BOOST_TIMEOUT=SECONDS' the timeout in seconds for
downloading the Boost library. The default is 600 seconds.
For example, if you normally build MySQL placing the object output in the 'bld' subdirectory of your MySQL source tree, you can build with Boost like this:
mkdir bld
cd bld
cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
This causes Boost to be downloaded into the 'my_boost' directory under your home directory. If the required Boost version is already there, no download is done. If the required Boost version changes, the newer version is downloaded.
If Boost is already installed locally and your compiler finds the Boost header files on its own, it may not be necessary to specify the preceding 'CMake' options. However, if the version of Boost required by MySQL changes and the locally installed version has not been upgraded, you may have build problems. Using the 'CMake' options should give you a successful build.
With the above settings that allow Boost download into a specified location, when the required Boost version changes, you need to remove the 'bld' folder, recreate it, and perform the 'cmake' step again. Otherwise, the new Boost version might not get downloaded, and compilation might fail.
'-DWITH_CLIENT_PROTOCOL_TRACING=BOOL'
Whether to build the client-side protocol tracing framework into the client library. By default, this option is enabled.
For information about writing protocol trace client plugins, see Writing Protocol Trace Plugins (https://dev.mysql.com/doc/extending-mysql/5.7/en/writing-protocol-trace-plugins.html).
See also the 'WITH_TEST_TRACE_PLUGIN' option.
'-DWITH_CURL=CURL_TYPE'
The location of the 'curl' library. CURL_TYPE can be 'system' (use the system 'curl' library) or a path name to the 'curl' library.
This option was added in MySQL 5.7.19.
'-DWITH_DEBUG=BOOL'
Whether to include debugging support.
Configuring MySQL with debugging support enables you to use the '--debug="d,parser_debug"' option when you start the server. This causes the Bison parser that is used to process SQL statements to dump a parser trace to the server's standard error output. Typically, this output is written to the error log.
Sync debug checking for the 'InnoDB' storage engine is defined under 'UNIV_DEBUG' and is available when debugging support is compiled in using the 'WITH_DEBUG' option. When debugging support is compiled in, the 'innodb_sync_debug' configuration option can be used to enable or disable 'InnoDB' sync debug checking.
As of MySQL 5.7.18, enabling 'WITH_DEBUG' also enables Debug Sync. For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization (https://dev.mysql.com/doc/internals/en/test-synchronization.html).
'-DWITH_DEFAULT_FEATURE_SET=BOOL'
Whether to use the flags from 'cmake/build_configurations/feature_set.cmake'.
'-DWITH_EDITLINE=VALUE'
Which 'libedit'/'editline' library to use. The permitted values are 'bundled' (the default) and 'system'.
'WITH_EDITLINE' replaces 'WITH_LIBEDIT', which has been removed.
'-DWITH_EMBEDDED_SERVER=BOOL'
Whether to build the 'libmysqld' embedded server library.
Note:
The 'libmysqld' embedded server library is deprecated as of MySQL 5.7.17 and has been removed in MySQL 8.0.
'-DWITH_EMBEDDED_SHARED_LIBRARY=BOOL'
Whether to build a shared 'libmysqld' embedded server library.
Note:
The 'libmysqld' embedded server library is deprecated as of MySQL 5.7.17 and has been removed in MySQL 8.0.
'-DWITH_EXTRA_CHARSETS=NAME'
Which extra character sets to include:
* 'all': All character sets. This is the default.
* 'complex': Complex character sets.
* 'none': No extra character sets.
'-DWITH_GMOCK=PATH_NAME'
The path to the googlemock distribution, for use with Google Test-based unit tests. The option value is the path to the distribution Zip file. Alternatively, set the 'WITH_GMOCK' environment variable to the path name. It is also possible to use '-DENABLE_DOWNLOADS=1', in which case 'CMake' downloads the distribution from GitHub.
If you build MySQL without the Google Test unit tests (by configuring wihout 'WITH_GMOCK'), 'CMake' displays a message indicating how to download it.
'-DWITH_INNODB_EXTRA_DEBUG=BOOL'
Whether to include extra InnoDB debugging support.
Enabling 'WITH_INNODB_EXTRA_DEBUG' turns on extra InnoDB debug checks. This option can only be enabled when 'WITH_DEBUG' is enabled.
'-DWITH_INNODB_MEMCACHED=BOOL'
Whether to generate memcached shared libraries ('libmemcached.so' and 'innodb_engine.so').
'-DWITH_KEYRING_TEST=BOOL'
Whether to build the test program that accompanies the 'keyring_file' plugin. The default is 'OFF'. Test file source code is located in the 'plugin/keyring/keyring-test' directory.
This option was added in MySQL 5.7.11.
'-DWITH_LDAP=VALUE'
Internal use only. This option was added in MySQL 5.7.29.
'-DWITH_LIBEVENT=STRING'
Which 'libevent' library to use. Permitted values are 'bundled' (default) and 'system'. Prior to MySQL 5.7.31, if you specify 'system', the system 'libevent' library is used if present, and an error occurs otherwise. In MySQL 5.7.31 and later, if 'system' is specified and no system 'libevent' library can be found, an error occurs regardless, and the bundled 'libevent' is not used.
The 'libevent' library is required by 'InnoDB' memcached and X Plugin.
'-DWITH_LIBWRAP=BOOL'
Whether to include 'libwrap' (TCP wrappers) support.
'-DWITH_LZ4=LZ4_TYPE'
The 'WITH_LZ4' option indicates the source of 'zlib' support:
* 'bundled': Use the 'lz4' library bundled with the
distribution. This is the default.
* 'system': Use the system 'lz4' library. If 'WITH_LZ4' is set
to this value, the *note 'lz4_decompress': lz4-decompress.
utility is not built. In this case, the system 'lz4' command
can be used instead.
'-DWITH_MECAB={disabled|system|PATH_NAME}'
Use this option to compile the MeCab parser. If you have installed MeCab to its default installation directory, set '-DWITH_MECAB=system'. The 'system' option applies to MeCab installations performed from source or from binaries using a native package management utility. If you installed MeCab to a custom installation directory, specify the path to the MeCab installation, for example, '-DWITH_MECAB=/opt/mecab'. If the 'system' option does not work, specifying the MeCab installation path should work in all cases.
For related information, see *note fulltext-search-mecab::.
'-DWITH_MSAN=BOOL'
Whether to enable MemorySanitizer, for compilers that support it. The default is off.
For this option to have an effect if enabled, all libraries linked to MySQL must also have been compiled with the option enabled.
'-DWITH_MSCRT_DEBUG=BOOL'
Whether to enable Visual Studio CRT memory leak tracing. The default is 'OFF'.
'-DWITH_NUMA=BOOL'
Explicitly set the NUMA memory allocation policy. 'CMake' sets the default 'WITH_NUMA' value based on whether the current platform has 'NUMA' support. For platforms without NUMA support, 'CMake' behaves as follows:
* With no NUMA option (the normal case), 'CMake' continues
normally, producing only this warning: 'NUMA library missing
or required version not available'.
* With '-DWITH_NUMA=ON', 'CMake' aborts with this error: 'NUMA
library missing or required version not available'.
This option was added in MySQL 5.7.17.
'-DWITH_PROTOBUF=PROTOBUF_TYPE'
Which Protocol Buffers package to use. PROTOBUF_TYPE can be one of the following values:
* 'bundled': Use the package bundled with the distribution.
This is the default.
* 'system': Use the package installed on the system.
Other values are ignored, with a fallback to 'bundled'.
This option was added in MySQL 5.7.12.
'-DWITH_RAPID=BOOL'
Whether to build the rapid development cycle plugins. When enabled, a 'rapid' directory is created in the build tree containing these plugins. When disabled, no 'rapid' directory is created in the build tree. The default is 'ON', unless the 'rapid' directory is removed from the source tree, in which case the default becomes 'OFF'. This option was added in MySQL 5.7.12.
'-DWITH_SASL=VALUE'
Internal use only. This option was added in MySQL 5.7.29. Not supported on Windows.
'-DWITH_SSL={SSL_TYPE'|PATH_NAME}
For support of encrypted connections, entropy for random number generation, and other encryption-related operations, MySQL must be built using an SSL library. This option specifies which SSL library to use.
* SSL_TYPE can be one of the following values:
* 'yes': Use the system OpenSSL library if present, else
the library bundled with the distribution.
* 'bundled': Use the SSL library bundled with the
distribution. This is the default prior to MySQL 5.7.28.
As of 5.7.28, this is no longer a permitted value and the
default is 'system'.
* 'system': Use the system OpenSSL library. This is the
default as of MySQL 5.7.28.
* PATH_NAME is the path name to the OpenSSL installation to use.
This can be preferable to using the SSL_TYPE value of 'system'
because it can prevent CMake from detecting and using an older
or incorrect OpenSSL version installed on the system.
(Another permitted way to do the same thing is to set
'WITH_SSL' to 'system' and set the 'CMAKE_PREFIX_PATH' option
to PATH_NAME.)
For additional information about configuring the SSL library, see *note source-ssl-library-configuration::.
'-DWITH_SYSTEMD=BOOL'
Whether to enable installation of 'systemd' support files. By default, this option is disabled. When enabled, 'systemd' support files are installed, and scripts such as *note 'mysqld_safe': mysqld-safe. and the System V initialization script are not installed. On platforms where 'systemd' is not available, enabling 'WITH_SYSTEMD' results in an error from 'CMake'.
For more information about using 'systemd', see note using-systemd::. That section also includes information about specifying options otherwise specified in '[mysqld_safe]' option groups. Because note 'mysqld_safe': mysqld-safe. is not installed when 'systemd' is used, such options must be specified another way.
'-DWITH_TEST_TRACE_PLUGIN=BOOL'
Whether to build the test protocol trace client plugin (see Using the Test Protocol Trace Plugin (https://dev.mysql.com/doc/extending-mysql/5.7/en/test-protocol-trace-plugin.html)). By default, this option is disabled. Enabling this option has no effect unless the 'WITH_CLIENT_PROTOCOL_TRACING' option is enabled. If MySQL is configured with both options enabled, the 'libmysqlclient' client library is built with the test protocol trace plugin built in, and all the standard MySQL clients load the plugin. However, even when the test plugin is enabled, it has no effect by default. Control over the plugin is afforded using environment variables; see Using the Test Protocol Trace Plugin (https://dev.mysql.com/doc/extending-mysql/5.7/en/test-protocol-trace-plugin.html).
Note:
Do not enable the 'WITH_TEST_TRACE_PLUGIN' option if you want to use your own protocol trace plugins because only one such plugin can be loaded at a time and an error occurs for attempts to load a second one. If you have already built MySQL with the test protocol trace plugin enabled to see how it works, you must rebuild MySQL without it before you can use your own plugins.
For information about writing trace plugins, see Writing Protocol Trace Plugins (https://dev.mysql.com/doc/extending-mysql/5.7/en/writing-protocol-trace-plugins.html).
'-DWITH_UBSAN=BOOL'
Whether to enable the Undefined Behavior Sanitizer, for compilers that support it. The default is off.
'-DWITH_UNIT_TESTS={ON|OFF}'
If enabled, compile MySQL with unit tests. The default is 'ON' unless the server is not being compiled.
'-DWITH_UNIXODBC=1'
Enables unixODBC support, for Connector/ODBC.
'-DWITH_VALGRIND=BOOL'
Whether to compile in the Valgrind header files, which exposes the Valgrind API to MySQL code. The default is 'OFF'.
To generate a Valgrind-aware debug build, '-DWITH_VALGRIND=1' normally is combined with '-DWITH_DEBUG=1'. See Building Debug Configurations (https://dev.mysql.com/doc/internals/en/debug-configurations.html).
'-DWITH_ZLIB=ZLIB_TYPE'
Some features require that the server be built with compression library support, such as the 'COMPRESS()' and 'UNCOMPRESS()' functions, and compression of the client/server protocol. The 'WITH_ZLIB' option indicates the source of 'zlib' support:
* 'bundled': Use the 'zlib' library bundled with the
distribution. This is the default.
* 'system': Use the system 'zlib' library.
'-DWITHOUT_SERVER=BOOL'
Whether to build without MySQL Server. The default is OFF, which does build the server.
This is considered an experimental option; it is preferred to build with the server.
Compiler Flags
'-DCMAKE_C_FLAGS="FLAGS'"
Flags for the C compiler.
'-DCMAKE_CXX_FLAGS="FLAGS'"
Flags for the C++ compiler.
'-DWITH_DEFAULT_COMPILER_OPTIONS=BOOL'
Whether to use the flags from 'cmake/build_configurations/compiler_options.cmake'.
Note:
All optimization flags are carefully chosen and tested by the MySQL build team. Overriding them can lead to unexpected results and is done at your own risk.
'-DSUNPRO_CXX_LIBRARY="LIB_NAME'"
Enable linking against 'libCstd' instead of 'stlport4' on Solaris 10 or later. This works only for client code because the server depends on C++98.
To specify your own C and C++ compiler flags, for flags that do not affect optimization, use the 'CMAKE_C_FLAGS' and 'CMAKE_CXX_FLAGS' CMake options.
When providing your own compiler flags, you might want to specify 'CMAKE_BUILD_TYPE' as well.
For example, to create a 32-bit release build on a 64-bit Linux machine, do this:
$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
If you set flags that affect optimization ('-ONUMBER'), you must set the 'CMAKE_C_FLAGS_BUILD_TYPE' and/or 'CMAKE_CXX_FLAGS_BUILD_TYPE' options, where BUILD_TYPE corresponds to the 'CMAKE_BUILD_TYPE' value. To specify a different optimization for the default build type ('RelWithDebInfo') set the 'CMAKE_C_FLAGS_RELWITHDEBINFO' and 'CMAKE_CXX_FLAGS_RELWITHDEBINFO' options. For example, to compile on Linux with '-O3' and with debug symbols, do this:
$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
CMake Options for Compiling NDB Cluster
The following options are for use when building NDB Cluster with the NDB Cluster sources; they are not currently supported when using sources from the MySQL 5.7 Server tree.
'-DMEMCACHED_HOME=DIR_NAME'
'NDB' support for memcached was removed in NDB 7.5.21 and NDB 7.6.17; thus, this option is no longer supported for building 'NDB' in these or later versions.
'-DWITH_BUNDLED_LIBEVENT={ON|OFF}'
'NDB' support for memcached was removed in NDB 7.5.21 and NDB 7.6.17, and thus this option is no longer supported for building 'NDB' in these or later versions.
'-DWITH_BUNDLED_MEMCACHED={ON|OFF}'
'NDB' support for memcached was removed in NDB 7.5.21 and NDB 7.6.17, and thus this option is no longer supported for building 'NDB' in these or later versions.
'-DWITH_CLASSPATH=PATH'
Sets the classpath for building MySQL NDB Cluster Connector for Java. The default is empty. This option is ignored if '-DWITH_NDB_JAVA=OFF' is used.
'-DWITH_ERROR_INSERT={ON|OFF}'
Enables error injection in the *note 'NDB': mysql-cluster. kernel. For testing only; not intended for use in building production binaries. The default is 'OFF'.
'-DWITH_NDBAPI_EXAMPLES={ON|OFF}'
Build NDB API example programs in 'storage/ndb/ndbapi-examples/'. See NDB API Examples (https://dev.mysql.com/doc/ndbapi/en/ndb-examples.html), for information about these.
'-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}'
For internal use only; may not always work as expected. To build with 'NDB' support, use 'WITH_NDBCLUSTER' instead.
'-DWITH_NDBCLUSTER={ON|OFF}'
Build and link in support for the note 'NDB': mysql-cluster. storage engine in note 'mysqld': mysqld. The default is 'ON'.
'-DWITH_NDBMTD={ON|OFF}'
Build the multithreaded data node executable *note 'ndbmtd': mysql-cluster-programs-ndbmtd. The default is 'ON'.
'-DWITH_NDB_BINLOG={ON|OFF}'
Enable binary logging by default in the *note 'mysqld': mysqld. built using this option. 'ON' by default.
'-DWITH_NDB_DEBUG={ON|OFF}'
Enable building the debug versions of the NDB Cluster binaries. This is 'OFF' by default.
'-DWITH_NDB_JAVA={ON|OFF}'
Enable building NDB Cluster with Java support, including support for ClusterJ (see MySQL NDB Cluster Connector for Java (https://dev.mysql.com/doc/ndbapi/en/mccj.html)).
This option is 'ON' by default. If you do not wish to compile NDB Cluster with Java support, you must disable it explicitly by specifying '-DWITH_NDB_JAVA=OFF' when running 'CMake'. Otherwise, if Java cannot be found, configuration of the build fails.
'-DWITH_NDB_PORT=PORT'
Causes the NDB Cluster management server (*note 'ndb_mgmd': mysql-cluster-programs-ndb-mgmd.) that is built to use this PORT by default. If this option is unset, the resulting management server tries to use port 1186 by default.
'-DWITH_NDB_TEST={ON|OFF}'
If enabled, include a set of NDB API test programs. The default is 'OFF'.
File: manual.info.tmp, Node: compilation-problems, Next: source-configuration-third-party, Prev: source-configuration-options, Up: source-installation
The solution to many problems involves reconfiguring. If you do reconfigure, take note of the following:
If 'CMake' is run after it has previously been run, it may use information that was gathered during its previous invocation. This information is stored in 'CMakeCache.txt'. When 'CMake' starts, it looks for that file and reads its contents if it exists, on the assumption that the information is still correct. That assumption is invalid when you reconfigure.
Each time you run 'CMake', you must run 'make' again to recompile. However, you may want to remove old object files from previous builds first because they were compiled using different configuration options.
To prevent old object files or configuration information from being used, run the following commands before re-running 'CMake':
On Unix:
$> make clean
$> rm CMakeCache.txt
On Windows:
$> devenv MySQL.sln /clean
$> del CMakeCache.txt
If you build outside of the source tree, remove and recreate your build directory before re-running 'CMake'. For instructions on building outside of the source tree, see How to Build MySQL Server with CMake (https://dev.mysql.com/doc/internals/en/cmake.html).
On some systems, warnings may occur due to differences in system include files. The following list describes other problems that have been found to occur most often when compiling MySQL:
To define which C and C++ compilers to use, you can define the 'CC' and 'CXX' environment variables. For example:
$> CC=gcc
$> CXX=g++
$> export CC CXX
While this can be done on the command line, as just shown, you may prefer to define these values in a build script, in which case the 'export' command is not needed.
To specify your own C and C++ compiler flags, use the 'CMAKE_C_FLAGS' and 'CMAKE_CXX_FLAGS' CMake options. See *note cmake-compiler-flags::.
To see what flags you might need to specify, invoke *note 'mysql_config': mysql-config. with the '--cflags' and '--cxxflags' options.
To see what commands are executed during the compile stage, after using 'CMake' to configure MySQL, run 'make VERBOSE=1' rather than just 'make'.
If compilation fails, check whether the 'MYSQL_MAINTAINER_MODE' option is enabled. This mode causes compiler warnings to become errors, so disabling it may enable compilation to proceed.
If your compile fails with errors such as any of the following, you must upgrade your version of 'make' to GNU 'make':
make: Fatal error in reader: Makefile, line 18:
Badly formed macro assignment
Or:
make: file `Makefile' line 18: Must be a separator (:
Or:
pthread.h: No such file or directory
Solaris and FreeBSD are known to have troublesome 'make' programs.
GNU 'make' 3.75 is known to work.
The 'sql_yacc.cc' file is generated from 'sql_yacc.yy'. Normally, the build process does not need to create 'sql_yacc.cc' because MySQL comes with a pregenerated copy. However, if you do need to re-create it, you might encounter this error:
"sql_yacc.yy", line XXX fatal: default action causes potential...
This is a sign that your version of 'yacc' is deficient. You probably need to install a recent version of 'bison' (the GNU version of 'yacc') and use that instead.
Versions of 'bison' older than 1.75 may report this error:
sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
The maximum table size is not actually exceeded; the error is caused by bugs in older versions of 'bison'.
For information about acquiring or updating tools, see the system requirements in *note source-installation::.
File: manual.info.tmp, Node: source-configuration-third-party, Prev: compilation-problems, Up: source-installation
Third-party tools that need to determine the MySQL version from the MySQL source can read the 'VERSION' file in the top-level source directory. The file lists the pieces of the version separately. For example, if the version is MySQL 5.7.4-m14, the file looks like this:
MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=7
MYSQL_VERSION_PATCH=4
MYSQL_VERSION_EXTRA=-m14
If the source is not for a MySQL Server General Availablility (GA) release, the 'MYSQL_VERSION_EXTRA' value is nonempty. In the preceding example, the value corresponds to Milestone 14.
'MYSQL_VERSION_EXTRA' is also nonempty for NDB Cluster releases (including GA releases of NDB Cluster), as shown here:
MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=7
MYSQL_VERSION_PATCH=32
MYSQL_VERSION_EXTRA=-ndb-7.5.21
To construct a five-digit number from the version components, use this formula:
MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH
File: manual.info.tmp, Node: postinstallation, Next: upgrading, Prev: source-installation, Up: installing