二进制发布用-staticis连接,说明一般情况你不需要关心系统库的版本。你也不需要安装LinuxThreads。用-staticis连接的程序稍微大于动态连接程序,但也稍微快一些(3-5%)。但是,静态连接程序的一个问题是你不能使用用户定义函数(UDF)。如果你将要写或使用UDF(只适用于C或C++ 编程人员),你必须使用动态链接自己编译MySQL。
二进制分发版的一个已知问题是在使用libc的旧的Linux系统(例如Red Hat 4.x或Slackware)上,你会遇到一些(非致命)主机名解析问题。如果系统使用libc没有使用glibc2,你可能会遇到一些主机名解析和getpwnam()问题。这是因为glibc依靠一些外部库来执行主机名解析和getpwent(), 即使用-staticis编译也如此。这些问题出现在两个方面:
· 当运行mysql_install_db时,你会看见下面的错误消息:
· Sorry, the host 'xxxx' could not be looked up
你可以通过执行mysql_install_db --force来解决该问题,并不在mysql_install_db中执行resolveip测试。不利方面是 你不能在授权表中使用主机名:除了localhost,必须使用IP号。如果你正使用不支持—force的旧版本MySQL,必须使用文本编辑器手动卸载mysql_install中的resolveip测试。
· 当你尝试用--user选项运行mysqld时你还会看见下面的错误:
· getpwnam: No such file or directory
要解决该问题,使用su命令启动mysqld,不要指定--user选项。这样使系统自己更改mysqld进程的用户ID,mysqld不再需要这样做。
另一个解决办法可以解决两个问题,即不使用二进制分发版。获得MySQL源码分发版(RPM或tar.gz格式)并安装。
在一些Linux 2.2版本中,当客户端通过TCP/IP建立大量与mysqld服务器的新连接时,你可能会遇到错误Resource temporarily unavailable。该问题是Linux在你关闭TCP/IP套接字的时间和系统实际释放该套接字的时间之间有一个延迟。只有有限数目的TCP/IP时段有空间,因此如果客户端试图在短时间内建立许多新TCP/IP连接时,你会遇到源不可用错误。例如,当你通过TCP/IP运行MySQL test-connect基准测试时你会看见该错误。
我们已经多次向不同的 Linux 邮件列表询问该问题,但是一直没有找到合适的解决办法。唯一知道的“解决办法”是客户端使用永久连接,或,如果你在同一机器上运行数据库服务器和客户端,使用Unix套接字文件来连接,不要使用TCP/IP连接。