Typical `configure' Options
---------------------------
The `configure' script gives you a great deal of control over how you
configure your MySQL distribution. Typically you do this using options
on the `configure' command line. You can also affect `configure' using
certain environment variables. Note:Environment variables. For a
list of options supported by `configure', run this command:
shell> ./configure --help
Some of the more commonly-used `configure' options are described below:
* 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 don't have a C++ compiler, `mysql' will not compile (it is
the one client program that requires 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 will still try to build `mysql', but you can ignore
any warnings about `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 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'.
* If you are using Unix and you want the MySQL socket located
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
Note that the given file must be an absolute pathname! You can
also later change the location `mysql.sock' by using the MySQL
option files. *Note Problems with mysql.sock::.
* If you want to compile statically linked programs (for example, to
make a binary distribution, to get more speed, or to work around
problems with some RedHat 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 will not attempt to
link in `libg++' or `libstdc++'.
Here is some common environment variables to set depending on the
compiler you are using:
gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors
-fno-exceptions -fno-rtti"
gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3
-mpentiumpro -felide-constructors -fno-exceptions
-fno-rtti"
pgcc 2.90.29 CFLAGS="-O3 -mpentiumpro -mstack-align-double"
or newer CXX=gcc CXXFLAGS="-O3 -mpentiumpro
-mstack-align-double -felide-constructors
-fno-exceptions -fno-rtti"
In most cases you can get a reasonably optimal MySQL binary by
using the options from the above 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://www.mysql.com' are all compiled with full optimization and
should be perfect for most users. Note:MySQL binaries. There
are some things you can tweak to make an even faster binary, but
this is only for advanced users. Note:Compile and link options.
If the build fails and produces errors about your compiler or
linker not being able to create the shared library
`libmysqlclient.so.#' (`#' is a version number), you can work
around this problem by giving the `--disable-shared' option to
`configure'. In this case, `configure' will not build a shared
`libmysqlclient.so.#' library.
* You can configure MySQL not to use `DEFAULT' column values for
non-`NULL' columns (that is, columns that are not allowed to be
`NULL'). This causes `INSERT' statements to generate an error
unless you explicitly specify values for all columns that require a
non-`NULL' value. To suppress use of default values, run
`configure' like this:
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
* By default, MySQL uses the ISO-8859-1 (Latin1) character set. To
change the default set, use the `--with-charset' option:
shell> ./configure --with-charset=CHARSET
`CHARSET' may be one of `big5', `cp1251', `cp1257', `czech',
`danish', `dec8', `dos', `euc_kr', `gb2312', `gbk', `german1',
`hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1',
`latin2', `sjis', `swe7', `tis620', `ujis', `usa7', or
`win1251ukr'. Note:Character sets.
If you want to convert characters between the server and the
client, you should take a look at the `SET OPTION CHARACTER SET'
command. Note:`SET OPTION'.
*Warning:* If you change character sets after having created any
tables, you will have to run `myisamchk -r -q' on every table. Your
indexes may be sorted incorrectly otherwise. (This can happen if
you install MySQL, create some tables, then reconfigure MySQL to
use a different character set and reinstall it.)
With the option `--with-extra-charset=LIST' you can define which
additional character sets should be incompiled in the server.
Here `LIST' is either a list of character set separated with space,
`complex' to include all characters that can't be dynamically
loaded or `all' to include all character sets into the binaries.
* 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.
Note:Debugging server.
* If your client programs are using threads, you need to also
compile a thread-safe version of the MySQL client library with the
`--enable-thread-safe-client' configure options. This will create a
`libmysqlclient_r' library with which you should link your threaded
applications. Note:Threaded clients.
* Options that pertain to particular systems can be found in the
system-specific section of this manual. Note:Operating System
Specific Notes.