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 -static
,
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–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 libc
rather
than 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 numbers
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.
You also may see the following error when you try to run
mysqld with the
--user
option:
getpwnam: No such file or directory
To work around this problem, start
mysqld by using the
su
command rather than by specifying
the --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
RPM or tar.gz
format) and install that
instead.
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.