Documentation Home
MySQL 5.6 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 30.1Mb
PDF (A4) - 30.3Mb
PDF (RPM) - 30.2Mb
EPUB - 7.8Mb
HTML Download (TGZ) - 7.6Mb
HTML Download (Zip) - 7.6Mb
HTML Download (RPM) - 6.6Mb
Eclipse Doc Plugin (TGZ) - 8.3Mb
Eclipse Doc Plugin (Zip) - 10.2Mb
Man Pages (TGZ) - 200.0Kb
Man Pages (Zip) - 311.5Kb
Info (Gzip) - 2.9Mb
Info (Zip) - 2.9Mb
Excerpts from this Manual

MySQL 5.6 Reference Manual  /  ...  /  MySQL Source-Configuration Options

2.9.4 MySQL Source-Configuration Options

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:

shell> cmake . -LH
shell> ccmake .

You can also affect CMake using certain environment variables. See Section 2.12, “Environment Variables”.

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.

Table 2.11 MySQL Source-Configuration Option Reference (CMake)

BUILD_CONFIGUse same build options as official releases
CMAKE_BUILD_TYPEType of build to produceRelWithDebInfo
CMAKE_C_FLAGSFlags for C Compiler
CMAKE_CXX_FLAGSFlags for C++ Compiler
CMAKE_INSTALL_PREFIXInstallation base directory/usr/local/mysql
COMPILATION_COMMENTComment about compilation environment
CPACK_MONOLITHIC_INSTALLWhether package build produces single fileOFF
DEFAULT_CHARSETThe default server character setlatin1
DEFAULT_COLLATIONThe default server collationlatin1_swedish_ci
ENABLE_DEBUG_SYNCWhether to enable Debug Sync supportON
ENABLE_DOWNLOADSWhether to download optional filesOFF
ENABLE_DTRACEWhether to include DTrace support
ENABLE_GCOVWhether to include gcov support 5.6.3
ENABLE_GPROFEnable gprof (optimized Linux builds only)OFF5.6.6
ENABLED_PROFILINGWhether to enable query profiling codeON
IGNORE_AIO_CHECKWith -DBUILD_CONFIG=mysql_release, ignore libaio checkOFF5.6.1
INNODB_PAGE_ATOMIC_REF_COUNTEnable or disable atomic page reference countingON5.6.16
INSTALL_BINDIRUser executables directoryPREFIX/bin
INSTALL_DOCDIRDocumentation directoryPREFIX/docs
INSTALL_INCLUDEDIRHeader file directoryPREFIX/include
INSTALL_INFODIRInfo file directoryPREFIX/docs
INSTALL_LAYOUTSelect predefined installation layoutSTANDALONE
INSTALL_LIBDIRLibrary file directoryPREFIX/lib
INSTALL_MANDIRManual page directoryPREFIX/man
INSTALL_MYSQLSHAREDIRShared data directoryPREFIX/share
INSTALL_MYSQLTESTDIRmysql-test directoryPREFIX/mysql-test
INSTALL_PLUGINDIRPlugin directoryPREFIX/lib/plugin
INSTALL_SBINDIRServer executable directoryPREFIX/bin
INSTALL_SCRIPTDIRScripts directoryPREFIX/scripts
INSTALL_SHAREDIRaclocal/mysql.m4 installation directoryPREFIX/share
INSTALL_SUPPORTFILESDIRExtra support files directoryPREFIX/support-files
MEMCACHED_HOMEPath to memcached[none]
MYSQL_DATADIRData directory
MYSQL_MAINTAINER_MODEWhether to enable MySQL maintainer-specific development environmentOFF
MYSQL_PROJECT_NAMEWindows/OS X project name33065.6.5
MYSQL_TCP_PORTTCP/IP port number3306
MYSQL_UNIX_ADDRUnix socket file/tmp/mysql.sock
ODBC_INCLUDESODBC includes directory
ODBC_LIB_DIRODBC library directory
OPTIMIZER_TRACEWhether to support optimizer tracing 5.6.3
SUNPRO_CXX_LIBRARYClient link library on Solaris 10+ 5.6.20
SYSCONFDIROption file directory
TMPDIRtmpdir default value 5.6.16
WITH_ASANEnable AddressSanitizerOFF5.6.15
WITH_BUNDLED_LIBEVENTUse bundled libevent when building ndbmemcacheON
WITH_BUNDLED_MEMCACHEDUse bundled memcached when building ndbmemcacheON
WITH_CLASSPATHClasspath to use when building MySQL Cluster Connector for Java. Default is an empty string.
WITH_DEBUGWhether to include debugging supportOFF
WITH_DEFAULT_COMPILER_OPTIONSWhether to use default compiler optionsON5.6.6
WITH_DEFAULT_FEATURE_SETWhether to use default feature setON5.6.6
WITH_EDITLINEWhich libedit/editline library to usebundled5.6.12
WITH_EMBEDDED_SERVERWhether to build embedded serverOFF
WITH_EMBEDDED_SHARED_LIBRARYWhether to build a shared embedded server libraryOFF5.6.17
WITH_xxx_STORAGE_ENGINECompile storage engine xxx statically into server
WITH_ERROR_INSERTEnable error injection in the NDB storage engine. Should not be used for building binaries intended for production.OFF
WITH_EXTRA_CHARSETSWhich extra character sets to includeall
WITH_INNODB_MEMCACHEDWhether to generate memcached shared libraries.OFF
WITH_LIBEDITUse bundled libedit libraryON 5.6.12
WITH_LIBEVENTWhich libevent library to usebundled5.6.6
WITH_LIBWRAPWhether to include libwrap (TCP wrappers) supportOFF
WITH_NDB_BINLOGEnable binary logging by default by mysqld.ON
WITH_NDB_DEBUGProduce a debug build for testing or troubleshooting.OFF
WITH_NDB_JAVAEnable building of Java and ClusterJ support. Enabled by default. Supported in MySQL Cluster only.ON
WITH_NDB_PORTDefault port used by a management server built with this option. If this option was not used to build it, the management server's default port is 1186.[none]
WITH_NDB_TESTInclude NDB API test programs.OFF
WITH_NDBMTDBuild multi-threaded data node.ON
WITH_READLINEUse bundled readline libraryOFF 5.6.5
WITH_SSLType of SSL supportbundled
WITH_VALGRINDWhether to compile in Valgrind header filesOFF
WITH_ZLIBType of zlib supportsystem
WITHOUT_xxx_STORAGE_ENGINEExclude storage engine xxx from build
WITHOUT_SERVERDo not build the serverOFF

The following sections provide more information about CMake options.

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 mysqld. Where applicable, configuration option descriptions indicate the corresponding mysqld startup option.

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.


    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.


    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.


    The installation base directory.

    This value can be set at server startup with the --basedir option.

  • -DINSTALL_BINDIR=dir_name

    Where to install user programs.

  • -DINSTALL_DOCDIR=dir_name

    Where to install documentation.


    Where to install README files.


    Where to install header files.

  • -DINSTALL_INFODIR=dir_name

    Where to install Info files.


    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:

    shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
  • -DINSTALL_LIBDIR=dir_name

    Where to install library files.

  • -DINSTALL_MANDIR=dir_name

    Where to install manual pages.


    Where to install shared data files.


    Where to install the mysql-test directory. As of MySQL 5.6.12, to suppress installation of this directory, explicitly set the option to the empty value (-DINSTALL_MYSQLTESTDIR=).


    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 mysqld server.


    Where to install mysql_install_db.


    Where to install aclocal/mysql.m4.


    Where to install the sql-bench directory. To suppress installation of this directory, explicitly set the option to the empty value (-DINSTALL_SQLBENCHDIR=).


    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, and may be used while configuring Connector/ODBC.

  • -DODBC_LIB_DIR=dir_name

    The location of the ODBC library directory, and 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.

  • -DTMPDIR=dir_name

    The default location to use for the tmpdir system variable. If unspecified, the value defaults to P_tmpdir in <stdio.h>. This option was added in MySQL 5.6.16.

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 INSTALL PLUGIN statement or the --plugin-load option before it can be used). Some plugins might not support static or dynamic building.

The MyISAM, MERGE, MEMORY, and CSV 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, INNOBASE (InnoDB), NDB or NDBCLUSTER (NDB), PARTITION (partitioning support), and PERFSCHEMA (Performance Schema). Examples:


WITH_NDBCLUSTER_STORAGE_ENGINE is supported only when building MySQL Cluster using the MySQL Cluster sources. It cannot be used to enable clustering support in other MySQL source trees or distributions. In MySQL Cluster source distributions, it is enabled by default. See Section, “Building MySQL Cluster from Source on Linux”, and Section, “Compiling and Installing MySQL Cluster from Source on Windows”, for more information.

To exclude a storage engine from the build, use -DWITHOUT_engine_STORAGE_ENGINE=1. Examples:


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


    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 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.


    Whether to compile the Debug Sync facility into the server. This facility is used for testing and debugging. This option is enabled by default, but has no effect unless MySQL is configured with debugging enabled. If debugging is enabled and you want to disable Debug Sync, use -DENABLE_DEBUG_SYNC=0.

    When compiled in, Debug Sync is disabled by default at runtime. To enable it, start mysqld with the --debug-sync-timeout=N option, where N is a timeout value greater than 0. (The default value is 0, which disables Debug Sync.) N becomes the default timeout for individual synchronization points.

    For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization.


    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.


    Whether to include support for DTrace probes. For information about DTrace, wee Section 5.4, “Tracing mysqld Using DTrace”

  • -DENABLE_GCOV=bool

    Whether to include gcov support (Linux only).


    Whether to enable gprof (optimized Linux builds only). This option was added in MySQL 5.6.6.


    Whether to enable LOCAL capability in the client library for LOAD DATA INFILE.

    This option controls client-side LOCAL capability, but the capability can be set on the server side at server startup with the --local-infile option. See Section 6.1.6, “Security Issues with LOAD DATA LOCAL”.


    Whether to enable query profiling code (for the SHOW PROFILE and SHOW PROFILES statements).


    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. This option was added in MySQL 5.6.1.


    Whether to enable or disable atomic page reference counting. Fetching and releasing pages from the buffer pool and tracking the page state are expensive and complex operations. Using a page mutex to track these operations does not scale well. With INNODB_PAGE_ATOMIC_REF_COUNT=ON (default), fetch and release is tracked using atomics where available. For platforms that do not support atomics, set INNODB_PAGE_ATOMIC_REF_COUNT=OFF to disable atomic page reference counting.

    When atomic page reference counting is enabled (default), [Note] InnoDB: Using atomics to ref count buffer pool pages is printed to the error log at server startup. If atomic page reference counting is disabled, [Note] InnoDB: Using mutexes to ref count buffer pool pages is printed instead.

    INNODB_PAGE_ATOMIC_REF_COUNT was introduced with the fix for MySQL Bug #68079. The option is removed in MySQL 5.7.5. Support for atomics is required to build MySQL as of MySQL 5.7.5, which makes the option obsolete.


    Whether to enable a MySQL maintainer-specific development environment. If enabled, this option causes compiler warnings to become errors.


    For Windows or OS X, the project name to incorporate into the project file name. This option was added in MySQL 5.6.5.

  • -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.


    Whether to support optimizer tracing. See MySQL Internals: Tracing the Optimizer. This option was added in MySQL 5.6.3.

  • -DWITH_ASAN=bool

    Whether to enable AddressSanitizer, for compilers that support it. The default is off. This option was added in MySQL 5.6.15.

  • -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.


    Whether to use the flags from cmake/build_configurations/feature_set.cmake. This option was added in MySQL 5.6.6.


    Which libedit/editline library to use. The permitted values are bundled (the default) and system.

    WITH_EDITLINE was added in MySQL 5.6.12. It replaces WITH_LIBEDIT, which has been removed.


    Whether to build the libmysqld embedded server library.


    Whether to build a shared libmysqld embedded server library. This option was added in MySQL 5.6.17.


    Which extra character sets to include:

    • all: All character sets. This is the default.

    • complex: Complex character sets.

    • none: No extra character sets.


    Whether to generate memcached shared libraries ( and

  • -DWITH_LIBEVENT=string

    Which libevent library to use. Permitted values are bundled (default), system, and yes. If you specify system or yes, the system libevent library is used if present. If the system library is not found, the bundled libevent library is used. The libevent library is required by InnoDB memcached.


    Whether to use the libedit library bundled with the distribution.

    WITH_LIBEDIT was removed in MySQL 5.6.12. Use WITH_EDITLINE instead.


    Whether to include libwrap (TCP wrappers) support.


    Whether to use the readline library bundled with the distribution. This option was removed in MySQL 5.6.5 because readline is no longer bundled.

  • -DWITH_SSL={ssl_type|path_name}

  • The type of SSL support to include (if any) or the path name to the OpenSSL installation to use.

    • ssl_type can be one of the following values:

      • no: No SSL support. This is the default before MySQL 5.6.6. As of 5.6.6, this is no longer a permitted value and the default is bundled.

      • yes: Use the system SSL library if present, else the library bundled with the distribution.

      • bundled: Use the SSL library bundled with the distribution. This is the default as of MySQL 5.6.6.

      • system: Use the system SSL library.

    • path_name, permitted for MySQL 5.6.7 and after, is the path name to the OpenSSL installation to use. Using this can be preferable to using the ssl_type value of system, for 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 the CMAKE_PREFIX_PATH option to path_name.)

    For information about using SSL support, see Section 6.3.10, “Using SSL for Secure Connections”.


    Enables unixODBC support, for Connector/ODBC.


    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.

  • -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 indicates the source of zlib support:

    • bundled: Use the zlib library bundled with the distribution.

    • system: Use the system zlib library. This is the default.


    Whether to build without the MySQL server. The default is OFF, which does build the server.

Compiler Flags

  • -DCMAKE_C_FLAGS="flags"

    Flags for the C Compiler.

  • -DCMAKE_CXX_FLAGS="flags"

    Flags for the C++ Compiler.


    Whether to use the flags from cmake/build_configurations/compiler_options.cmake. This option was added in MySQL 5.6.6.


    All optimization flags were 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. Example usage:


    This option was added in MySQL 5.6.20.

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:

shell> mkdir bld
shell> cd bld
shell> cmake .. -DCMAKE_C_FLAGS=-m32 \
         -DCMAKE_CXX_FLAGS=-m32 \

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:

shell> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \

CMake Options for Compiling MySQL Cluster

The following options are for use when building MySQL Cluster with the MySQL Cluster sources; they are not currently supported when using sources from the MySQL 5.6 Server tree.

  • -DMEMCACHED_HOME=dir_name

    Perform the build using the memcached (version 1.6 or later) installed in the system directory indicated by dir_name. Files from this installation that are used in the build include the memcached binary, header files, and libraries, as well as the memcached_utilities library and the header file engine_testapp.h.

    You must leave this option unset when building ndbmemcache using the bundled memcached sources (WITH_BUNDLED_MEMCACHED option); in other words, the bundled sources are used by default).

    This option was added in MySQL Cluster NDB 7.2.2.

    While additional CMake options—such as for SASL authorization and for providing dtrace support—are available for use when compiling memcached from external sources, these options are currently not enabled for the memcached sources bundled with MySQL Cluster.


    Use the libevent included in the MySQL Cluster sources when building MySQL Cluster with ndbmemcached support (MySQL Cluster NDB 7.2.2 and later). Enabled by default. OFF causes the system's libevent to be used instead.


    Build the memcached sources included in the MySQL Cluster source tree (MySQL Cluster NDB 7.2.3 and later), then use the resulting memcached server when building the ndbmemcache engine. In this case, make install places the memcached binary in the installation bin directory, and the ndbmemcache engine shared object file in the installation lib directory.

    This option is ON by default.


    Sets the classpath for building MySQL Cluster Connector for Java. The default is empty. In MySQL Cluster NDB 7.2.9 and later, this option is ignored if -DWITH_NDB_JAVA=OFF is used.


    Enables error injection in the NDB kernel. For testing only; not intended for use in building production binaries. The default is OFF.


    Build and link in support for the NDB (NDBCLUSTER) storage engine in mysqld. The default is ON.


    This is an alias for WITH_NDBCLUSTER_STORAGE_ENGINE.


    Build the multi-threaded data node executable ndbmtd. The default is ON.


    Enable binary logging by default in the mysqld built using this option. ON by default.


    Enable building the debug versions of the MySQL Cluster binaries. OFF by default.


    Enable building MySQL Cluster with Java support, including ClusterJ.

    This option was added in MySQL Cluster NDB 7.2.9, and is ON by default. If you do not wish to compile MySQL 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 MySQL Cluster management server (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.


    If enabled, include a set of NDB API test programs. The default is OFF.

Download this Manual
PDF (US Ltr) - 30.1Mb
PDF (A4) - 30.3Mb
PDF (RPM) - 30.2Mb
EPUB - 7.8Mb
HTML Download (TGZ) - 7.6Mb
HTML Download (Zip) - 7.6Mb
HTML Download (RPM) - 6.6Mb
Eclipse Doc Plugin (TGZ) - 8.3Mb
Eclipse Doc Plugin (Zip) - 10.2Mb
Man Pages (TGZ) - 200.0Kb
Man Pages (Zip) - 311.5Kb
Info (Gzip) - 2.9Mb
Info (Zip) - 2.9Mb
User Comments
Sign Up Login You must be logged in to post a comment.