The configure script gives you a great deal of control over how you configure a MySQL source distribution. Typically you do this using options on the configure command line. You can also affect configure using certain environment variables. See Environment Variables. For a full list of options supported by configure, run this command:
shell> ./configure --help
A list of the available configure options is provided in the table below.
Table 2.1. Build (configure
)
Reference
Formats | Description | Default | Introduced | Removed |
---|---|---|---|---|
--bindir=DIR | User executables | EPREFIX/bin | ||
--build=BUILD | Configure for building on BUILD | guessed | ||
--cache-file=FILE | Cache test results in FILE | disabled | ||
-C | Alias for `--cache-file=config.cache' | |||
--config-cache | ||||
--datadir=DIR | Read-only architecture-independent data | PREFIX/share | ||
--disable-FEATURE | Do not include FEATURE | |||
--disable-dependency-tracking | Disable dependency tracking | |||
--disable-grant-options | Disable GRANT options | |||
--disable-largefile | Omit support for large files | |||
--disable-libtool-lock | Disable libtool lock | |||
--disable-thread-safe-client | Compile the client without threads | 5.1.7 | ||
--enable-FEATURE | Enable FEATURE | |||
--enable-assembler | Use assembler versions of some string functions if available | |||
--enable-debug-sync | Compile in Debug Sync facility | 5.1.41 | ||
--enable-dependency-tracking | Do not reject slow dependency extractors | |||
--enable-fast-install | Optimize for fast installation | yes | ||
--enable-local-infile | Enable LOAD DATA LOCAL INFILE | disabled | ||
--enable-shared | Build shared libraries | yes | ||
--enable-static | Build static libraries | yes | ||
--enable-thread-safe-client | Compile the client with threads | |||
--exec-prefix=EPREFIX | Install architecture-dependent files in EPREFIX | |||
-h | Display this help and exit | |||
--help | ||||
--help=short | Display options specific to this package | |||
--help=recursive | Display the short help of all the included packages | |||
--host=HOST | Cross-compile to build programs to run on HOST | |||
--includedir=DIR | C header files | PREFIX/include | ||
--infodir=DIR | Info documentation | PREFIX/info | ||
--libdir=DIR | Object code libraries | EPREFIX/lib | ||
--libexecdir=DIR | Program executables | EPREFIX/libexec | ||
--localstatedir=DIR | Modifiable single-machine data | PREFIX/var | ||
--mandir=DIR | man documentation | PREFIX/man | ||
-n | Do not create output files | |||
--no-create | ||||
--oldincludedir=DIR | C header files for non-gcc | /usr/include | ||
--prefix=PREFIX | Install architecture-independent files in PREFIX | |||
--program-prefix=PREFIX | Prepend PREFIX to installed program names | |||
--program-suffix=SUFFIX | Append SUFFIX to installed program names | |||
--program-transform-name=PROGRAM | run sed PROGRAM on installed program names | |||
-q | Do not print `checking...' messages | |||
--quiet | ||||
--sbindir=DIR | System admin executables | EPREFIX/sbin | ||
--sharedstatedir=DIR | Modifiable architecture-independent data | PREFIX/com | ||
--srcdir=DIR | Find the sources in DIR | configure directory or .. | ||
--sysconfdir=DIR | Read-only single-machine data | PREFIX/etc | ||
--target=TARGET | Configure for building compilers for TARGET | |||
-V | Display version information and exit | |||
--version | ||||
--with-PACKAGE | Use PACKAGE | |||
--with-archive-storage-engine | Enable the Archive Storage Engine | no | ||
--with-atomic-ops | Implement atomic operations using pthread rwlocks or atomic CPU instructions for multi-processor | 5.1.12 | ||
--with-berkeley-db | Use BerkeleyDB located in DIR | no | ||
--with-berkeley-db-includes | Find Berkeley DB headers in DIR | |||
--with-berkeley-db-libs | Find Berkeley DB libraries in DIR | |||
--with-big-tables | Support tables with more than 4 G rows even on 32 bit platforms | |||
--with-blackhole-storage-engine | Enable the Blackhole Storage Engine | no | ||
--with-charset | Default character set | |||
--with-client-ldflags | Extra linking arguments for clients | |||
--with-collation | Default collation | |||
--with-comment | Comment about compilation environment | |||
--with-csv-storage-engine | Enable the CSV Storage Engine | yes | ||
--with-darwin-mwcc | Use Metrowerks CodeWarrior wrappers on OS X/Darwin | |||
--with-debug | Add debug code | 5.1.7 | ||
--with-debug=full | Add debug code (adds memory checker, very slow) | |||
--with-embedded-privilege-control | Build parts to check user's privileges (only affects embedded library) | |||
--with-embedded-server | Build the embedded server | |||
--with-error-inject | Enable error injection in MySQL Server | 5.1.11 | ||
--with-example-storage-engine | Enable the Example Storage Engine | no | ||
--with-extra-charsets | Use charsets in addition to default | |||
--with-fast-mutexes | Compile with fast mutexes | enabled | 5.1.5 | |
--with-federated-storage-engine | Enable federated storage engine | no | 5.1.3 | 5.1.9 |
--with-gnu-ld | Assume the C compiler uses GNU ld | no | ||
--with-innodb | Enable innobase storage engine | no | 5.1.3 | 5.1.9 |
--with-lib-ccflags | Extra CC options for libraries | |||
--with-libwrap=DIR | Compile in libwrap (tcp_wrappers) support | |||
--with-low-memory | Try to use less memory to compile to avoid memory limitations | |||
--with-machine-type | Set the machine type, like "powerpc" | |||
--with-max-indexes=N | Sets the maximum number of indexes per table | 64 | ||
--with-mysqld-ldflags | Extra linking arguments for mysqld | |||
--with-mysqld-libs | Extra libraries to link with for mysqld | |||
--with-mysqld-user | What user the mysqld daemon shall be run as | |||
--with-mysqlmanager | Build the mysqlmanager binary | Build if server is built | ||
--with-named-curses-libs | Use specified curses libraries | |||
--with-named-thread-libs | Use specified thread libraries | |||
--with-ndb-ccflags | Extra CC options for ndb compile | |||
--with-ndb-docs | Include the NDB Cluster ndbapi and mgmapi documentation | |||
--with-ndb-port | Port for NDB Cluster management server | |||
--with-ndb-port-base | Port for NDB Cluster management server | |||
--with-ndb-sci=DIR | Provide MySQL with a custom location of sci library | |||
--with-ndb-test | Include the NDB Cluster ndbapi test programs | |||
--with-ndbcluster | Include the NDB Cluster table handler | no | ||
--with-openssl=DIR | Include the OpenSSL support | |||
--with-openssl-includes | Find OpenSSL headers in DIR | |||
--with-openssl-libs | Find OpenSSL libraries in DIR | |||
--with-other-libc=DIR | Link against libc and other standard libraries installed in the specified nonstandard location | |||
--with-pic | Try to use only PIC/non-PIC objects | Use both | ||
--with-plugin-PLUGIN | Forces the named plugin to be linked into mysqld statically | 5.1.11 | ||
--with-plugins | Plugins to include in mysqld | none | 5.1.11 | |
--with-pstack | Use the pstack backtrace library | |||
--with-pthread | Force use of pthread library | |||
--with-row-based-replication | Include row-based replication | 5.1.5 | 5.1.6 | |
--with-server-suffix | Append value to the version string | |||
--with-ssl=DIR | Include SSL support | 5.1.11 | ||
--with-system-type | Set the system type, like "sun-solaris10" | |||
--with-tags | Include additional configurations | automatic | ||
--with-tcp-port | Which port to use for MySQL services | 3306 | ||
--with-unix-socket-path | Where to put the unix-domain socket | |||
--with-yassl | Include the yaSSL support | |||
--with-zlib-dir=no|bundled|DIR | Provide MySQL with a custom location of compression library | |||
--without-PACKAGE | Do not use PACKAGE | |||
--without-bench | Skip building of the benchmark suite | |||
--without-debug | Build a production version without debugging code | |||
--without-docs | Skip building of the documentation | |||
--without-extra-tools | Skip building utilities in the tools directory | |||
--without-geometry | Do not build geometry-related parts | |||
--without-libedit | Use system libedit instead of bundled copy | |||
--without-man | Skip building of the man pages | |||
--without-ndb-binlog | Disable ndb binlog | 5.1.6 | ||
--without-ndb-debug | Disable special ndb debug features | |||
--without-plugin-PLUGIN | Exclude PLUGIN | 5.1.11 | ||
--without-query-cache | Do not build query cache | |||
--without-readline | Use system readline instead of bundled copy | |||
--without-row-based-replication | Don't include row-based replication | 5.1.7 | 5.1.14 | |
--without-server | Only build the client | |||
--without-uca | Skip building of the national Unicode collations |
Some of the configure options available are described here. For options that may be of use if you have difficulties building MySQL, see Chapter 4, Dealing with Problems Compiling MySQL.
To compile just the MySQL client libraries and client programs
and not the server, use the
--without-server
option:
shell> ./configure --without-server
If you have no C++ compiler, some client programs such as
mysql cannot be compiled because they
require C++.. In this case, you can remove the code in
configure that tests for the C++ compiler
and then run ./configure with the
--without-server
option. The
compile step should still try to build all clients, but you
can ignore any warnings about files such as
mysql.cc
. (If make
stops, try make -k to tell it to continue
with the rest of the build even if errors occur.)
If you want to build the embedded MySQL library
(libmysqld.a
), use the
--with-embedded-server
option.
If you don't want your log files and database directories
located under /usr/local/var
, use a
configure command something like one of
these:
shell>./configure --prefix=/usr/local/mysql
shell>./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
The first command changes the installation prefix so that
everything is installed under
/usr/local/mysql
rather than the default
of /usr/local
. The second command
preserves the default installation prefix, but overrides the
default location for database directories (normally
/usr/local/var
) and changes it to
/usr/local/mysql/data
.
You can also specify the installation directory and data
directory locations at server startup time by using the
--basedir
and
--datadir
options. These can be
given on the command line or in an MySQL option file, although
it is more common to use an option file. See
Using Option Files.
This option specifies the port number on which the server listens for TCP/IP connections. The default is port 3306. To listen on a different port, use a configure command like this:
shell> ./configure --with-tcp-port=3307
If you are using Unix and you want the MySQL socket file
location to be somewhere other than the default location
(normally in the directory /tmp
or
/var/run
), use a
configure command like this:
shell>./configure \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
The socket file name must be an absolute path name. You can
also change the location of mysql.sock
at
server startup by using a MySQL option file. See
How to Protect or Change the MySQL Unix Socket File.
If you want to compile statically linked programs (for example, to make a binary distribution, to get better performance, or to work around problems with some Red Hat Linux distributions), run configure like this:
shell>./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
If you are using gcc and don't have
libg++
or libstdc++
installed, you can tell configure to use
gcc as your C++ compiler:
shell> CC=gcc CXX=gcc ./configure
When you use gcc as your C++ compiler, it
does not attempt to link in libg++
or
libstdc++
. This may be a good thing to do
even if you have those libraries installed. Some versions of
them have caused strange problems for MySQL users in the past.
The following list indicates some compilers and environment variable settings that are commonly used with each one.
gcc 2.7.2:
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
gcc 2.95.2:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti"
pgcc
2.90.29 or newer:
CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \ CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \ -felide-constructors -fno-exceptions -fno-rtti"
In most cases, you can get a reasonably optimized MySQL binary by using the options from the preceding list and adding the following options to the configure line:
--prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
The full configure line would, in other words, be something like the following for all recent gcc versions:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
The binaries we provide on the MySQL Web site at http://dev.mysql.com/downloads/ are all compiled with full optimization and should be perfect for most users. See Installing MySQL from Generic Binaries on Unix/Linux. There are some configuration settings you can tweak to build an even faster binary, but these are only for advanced users. See How Compiling and Linking Affects the Speed of MySQL.
If the build fails and produces errors about your compiler or
linker not being able to create the shared library
libmysqlclient.so.
(where N
N
is a version number), you
can work around this problem by giving the
--disable-shared
option to
configure. In this case,
configure does not build a shared
libmysqlclient.so.
library.
N
By default, MySQL uses the latin1
(cp1252
West European) character set. To change the default set, use
the --with-charset
option:
shell> ./configure --with-charset=CHARSET
CHARSET
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
. (Additional
character sets might be available. Check the output from
./configure --help for the current list.)
The default collation may also be specified. MySQL uses the
latin1_swedish_ci
collation by default. To
change this, use the
--with-collation
option:
shell> ./configure --with-collation=COLLATION
To change both the character set and the collation, use both
the --with-charset
and
--with-collation
options.
The collation must be a legal collation for the character set.
(Use the SHOW COLLATION
statement to determine which collations are available for each
character set.)
With the configure option
--with-extra-charsets=
,
you can define which additional character sets should be
compiled into the server. LIST
LIST
is
one of the following:
A list of character set names separated by spaces
complex
to include all character sets
that can't be dynamically loaded
all
to include all character sets into
the binaries
Clients that want to convert characters between the server and
the client should use the SET NAMES
statement. See Session System Variables, and
Connection Character Sets and Collations.
To configure MySQL with debugging code, use the
--with-debug
option:
shell> ./configure --with-debug
This causes a safe memory allocator to be included that can find some errors and that provides output about what is happening. See MySQL Internals: Porting.
As of MySQL 5.1.12, using
--with-debug
to configure
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.
To cause the Debug Sync facility to be compiled into the
server, use the
--enable-debug-sync
option.
This facility is used for testing and debugging. When compiled
in, Debug Sync is disabled by default. To enable it, start
mysqld with the
--debug-sync-timeout=
option, where N
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.
Debug Sync is also compiled in if you configure with the
--with-debug
option (which
implies
--enable-debug-sync
), unless
you also use the
--disable-debug-sync
option.
For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization.
The --enable-debug-sync
and
--disable-debug-sync
options were added in MySQL 5.1.41.
If your client programs are using threads, you must compile a
thread-safe version of the MySQL client library with the
--enable-thread-safe-client
configure option. This creates a
libmysqlclient_r
library with which you
should link your threaded applications. See
How to Make a Threaded Client.
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-dir=no|bundled|
option provides control over compression library support. The
value DIR
no
explicitly disables compression
support. bundled
causes the
zlib
library bundled in the MySQL sources
to be used. A DIR
path name
specifies the directory in which to find the compression
library sources.
It is possible to build MySQL with large table support using
the --with-big-tables
option.
This option causes the variables that store table row counts
to be declared as unsigned long long
rather
than unsigned long
. This enables tables to
hold up to approximately 1.844E+19
((232)2)
rows rather than 232 (~4.295E+09)
rows. Previously it was necessary to pass
-DBIG_TABLES
to the compiler manually in
order to enable this feature.
Run configure with the
--disable-grant-options
option to cause the
--bootstrap
,
--skip-grant-tables
, and
--init-file
options for
mysqld to be disabled. For Windows, the
configure.js script recognizes the
DISABLE_GRANT_OPTIONS
flag, which has the
same effect. The capability is available as of MySQL 5.1.15.
This option allows MySQL Community Server features to be
enabled. Additional options may be required for individual
features, such as
--enable-profiling
to enable
statement profiling. This option was added in MySQL 5.1.24. It
is enabled by default as of MySQL 5.1.28; to disable it, use
--disable-community-features
.
When given with
--enable-community-features
,
the --enable-profiling
option enables the statement profiling capability exposed by
the SHOW PROFILE
and
SHOW PROFILES
statements. (See
SHOW PROFILES
Syntax.) This option was added in
MySQL 5.1.24. It is enabled by default as of MySQL 5.1.28; to
disable it, use
--disable-profiling
.
See General Installation Guidance, for options that pertain to particular operating systems.
See Using SSL Connections, for options that pertain to configuring MySQL to support secure (encrypted) connections.
Several configure options apply to plugin selection and building:
--with-plugins=PLUGIN
[,PLUGIN
]... --with-plugins=GROUP
--with-plugin-PLUGIN
--without-plugin-PLUGIN
PLUGIN
is an individual plugin name
such as csv
or archive
.
As shorthand, GROUP
is a
configuration group name such as none
(select no plugins) or all
(select all
plugins).
You can build a plugin as static (compiled into the server) or
dynamic (built as a dynamic library that must be installed
using the INSTALL PLUGIN
statement before it can be used). Some plugins might not
support static or dynamic build.
configure --help shows the following information pertaining to plugins:
The plugin-related options
The names of all available plugins
For each plugin, a description of its purpose, which build types it supports (static or dynamic), and which plugin groups it is a part of.
--with-plugins
can take a
list of one or more plugin names separated by commas, or a
plugin group name. The named plugins are configured to be
built as static plugins.
--with-plugin-
configures the given plugin to be built as a static plugin.
PLUGIN
--without-plugin-
disables the given plugin from being built.
PLUGIN
If a plugin is named both with a --with
and
--without
option, the result is undefined.
For any plugin that is not explicitly selected or disabled, it is selected to be built dynamically if it supports dynamic build, and not built if it does not support dynamic build. (Thus, in the case that no plugin options are given, all plugins that support dynamic build are selected to be built as dynamic plugins. Plugins that do not support dynamic build are not built.)