The Linux-Intel binary and RPM releases of MySQL are configured for the highest possible speed. We are always trying to use the fastest stable compiler available.
The binary release is linked with
which means you do not normally need to worry about which
version of the system libraries you have. You need not install
LinuxThreads, either. A program linked with
-static is slightly larger than a dynamically
linked program, but also slightly faster (3% to 5%). However,
one problem with a statically linked program is that you can't
use user-defined functions (UDFs). If you are going to write
or use UDFs (this is something for C or C++ programmers only),
you must compile MySQL yourself using dynamic linking.
A known issue with binary distributions is that on older Linux
systems that use
libc (such as Red Hat 4.x
or Slackware), you get some (nonfatal) issues with host name
resolution. If your system uses
glibc2, you probably will encounter
some difficulties with host name resolution and
getpwnam(). This happens because
glibc (unfortunately) depends on some
external libraries to implement host name resolution and
getpwent(), even when compiled with
-static. These problems manifest themselves
in two ways:
You may see the following error message when you run mysql_install_db:
Sorry, the host '
xxxx' could not be looked up
You can deal with this by executing
mysql_install_db --force, which does
not execute the resolveip test in
mysql_install_db. The downside is that
you cannot use host names in the grant tables: except for
localhost, you must use IP addresses
instead. If you are using an old version of MySQL that
does not support
--force, you must
manually remove the
resolveip test in
mysql_install_db using a text editor.
getpwnam: No such file or directory
To work around this problem, start
mysqld by using the
su command rather than by specifying
--user option. This
causes the system itself to change the user ID of the
mysqld process so that
mysqld need not do so.
Another solution, which solves both problems, is not to use a
binary distribution. Obtain a MySQL source distribution (in
.tar.gz format) and install that
On some Linux 2.2 versions, you may get the error
Resource temporarily unavailable when
clients make a great many new connections to a
mysqld server over TCP/IP. The problem is
that Linux has a delay between the time that you close a
TCP/IP socket and the time that the system actually frees it.
There is room for only a finite number of TCP/IP slots, so you
encounter the resource-unavailable error if clients attempt
too many new TCP/IP connections over a short period of time.
For example, you may see the error when you run the MySQL
test-connect benchmark over TCP/IP.
We have inquired about this problem a few times on different Linux mailing lists but have never been able to find a suitable resolution. The only known “fix” is for clients to use persistent connections, or, if you are running the database server and clients on the same machine, to use Unix socket file connections rather than TCP/IP connections.