-
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, mysql cannot
be compiled (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
should 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 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 locations at server startup time by
using a MySQL option file. See
Section 4.3.2, “Using Option Files”.
-
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 filename must be an absolute pathname. You can
also change the location of mysql.sock
at server startup by using a MySQL option file. See
Section A.4.5, “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"
-
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 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
https://dev.mysql.com/downloads/ are all compiled with
full optimization and should be perfect for most users. See
Section 2.1.2.5, “MySQL Binaries Compiled by MySQL AB”. There are some
configuration settings you can tweak to build an even faster
binary, but these are only for advanced users. See
Section 7.5.4, “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.N
(where 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.N
library.
-
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
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
.
See Section 5.10.1, “The Character Set Used for Data and Sorting”.
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.)
If you want to convert characters between the server and the
client, you should use the SET NAMES
statement. See Section 13.5.3, “SET
Syntax”, and
Section 10.4, “Connection Character Sets and Collations”.
Warning: If you change
character sets after having created any tables, you must run
myisamchk -r -q
--set-collation=collation_name
on every table. Your indexes may be
sorted incorrectly otherwise. This can happen if you install
MySQL, create some tables, and then reconfigure MySQL to use
a different character set and reinstall it.
With the configure option
--with-extra-charsets=LIST
,
you can define which additional character sets should be
compiled into the server. 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
-
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 Section E.1, “Debugging a MySQL Server”.
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 Section 25.2.15, “How to Make a Threaded Client”.
-
It is possible to build MySQL with large table support using
the --with-big-tables
option.
This option causes the variables used to keep table row
counts to be stored using unsigned long
long
rather than unsigned long
.
What this does is to allow 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.
Options that pertain to particular operating systems can be
found in the system-specific section of this manual. See
Section 2.12, “Operating System-Specific Notes”.