2.12.1.2. Linux Binary Distribution Notes
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 (non-fatal) issues with hostname
resolution. If your system uses libc
rather
than glibc2
, you probably will encounter
some difficulties with hostname resolution and
getpwnam()
. This happens because
glibc
(unfortunately) depends on some
external libraries to implement hostname 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 hostnames 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
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.