2.1 General Installation Issues

 <  Day Day Up  >  

Before installing MySQL, you should do the following:

  1. Determine whether or not MySQL runs on your platform.

  2. Choose a distribution to install.

  3. Download the distribution and verify its integrity.

This section contains the information necessary to carry out these steps. After doing so, you can use the instructions in later sections of the chapter to install the distribution that you choose.

2.1.1 Operating Systems Supported by MySQL

This section lists the operating systems on which you can expect to be able to run MySQL.

We use GNU Autoconf, so it is possible to port MySQL to all modern systems that have a C++ compiler and a working implementation of POSIX threads. (Thread support is needed for the server. To compile only the client code, the only requirement is a C++ compiler.) We use and develop the software ourselves primarily on Linux (SuSE and Red Hat), FreeBSD, and Sun Solaris (Versions 8 and 9).

MySQL has been reported to compile successfully on the following combinations of operating system and thread package. Note that for many operating systems, native thread support works only in the latest versions.

  • AIX 4.x, 5.x with native threads. See Section 2.6.5.3, "IBM-AIX Notes."

  • Amiga.

  • BSDI 2.x with the MIT-pthreads package. See Section 2.6.4.5, "BSD/OS Version 2.x Notes."

  • BSDI 3.0, 3.1 and 4.x with native threads. See Section 2.6.4.5, "BSD/OS Version 2.x Notes."

  • DEC UNIX 4.x with native threads. See Section 2.6.5.5, "Alpha-DEC-Unix Notes (Tru64)."

  • FreeBSD 2.x with the MIT-pthreads package. See Section 2.6.4.1, "FreeBSD Notes."

  • FreeBSD 3.x and 4.x with native threads. See Section 2.6.4.1, "FreeBSD Notes."

  • FreeBSD 4.x with LinuxThreads. See Section 2.6.4.1, "FreeBSD Notes."

  • HP-UX 10.20 with the DCE threads or the MIT-pthreads package. See Section 2.6.5.1, "HP-UX Version 10.20 Notes."

  • HP-UX 11.x with the native threads. See Section 2.6.5.2, "HP-UX Version 11.x Notes."

  • Linux 2.0+ with LinuxThreads 0.7.1+ or glibc 2.0.7+. See Section 2.6.1, "Linux Notes."

  • Mac OS X. See Section 2.6.2, "Mac OS X Notes."

  • NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (requires GNU make). See Section 2.6.4.2, "NetBSD Notes."

  • Novell NetWare 6.0. See Section 2.2.4, "Installing MySQL on NetWare."

  • OpenBSD > 2.5 with native threads. OpenBSD < 2.5 with the MIT-pthreads package. See Section 2.6.4.3, "OpenBSD 2.5 Notes."

  • OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. See Section 2.6.6, "OS/2 Notes."

  • SCO OpenServer with a recent port of the FSU Pthreads package. See Section 2.6.5.8, "SCO Notes."

  • SCO UnixWare 7.1.x. See Section 2.6.5.9, "SCO UnixWare Version 7.1.x Notes."

  • SGI Irix 6.x with native threads. See Section 2.6.5.7, "SGI Irix Notes."

  • Solaris 2.5 and above with native threads on SPARC and x86. See Section 2.6.3, "Solaris Notes."

  • SunOS 4.x with the MIT-pthreads package. See Section 2.6.3, "Solaris Notes."

  • Tru64 Unix

  • Windows 9x, Me, NT, 2000, and XP. See Section 2.2.1, "Installing MySQL on Windows."

Not all platforms are equally well-suited for running MySQL. How well a certain platform is suited for a high-load mission-critical MySQL server is determined by the following factors:

  • General stability of the thread library. A platform may have an excellent reputation otherwise , but MySQL will be only as stable as the thread library if that library is unstable in the code that is called by MySQL, even if everything else is perfect.

  • The capability of the kernel and the thread library to take advantage of symmetric multi-processor (SMP) systems. In other words, when a process creates a thread, it should be possible for that thread to run on a different CPU than the original process.

  • The capability of the kernel and the thread library to run many threads that acquire and release a mutex over a short critical region frequently without excessive context switches. If the implementation of pthread_mutex_lock() is too anxious to yield CPU time, this will hurt MySQL tremendously. If this issue is not taken care of, adding extra CPUs will actually make MySQL slower.

  • General filesystem stability and performance.

  • If your tables are big, the ability of the filesystem to deal with large files at all and to deal with them efficiently .

  • Our level of expertise here at MySQL AB with the platform. If we know a platform well, we enable platform-specific optimizations and fixes at compile time. We can also provide advice on configuring your system optimally for MySQL.

  • The amount of testing we have done internally for similar configurations.

  • The number of users that have successfully run MySQL on the platform in similar configurations. If this number is high, the chances of encountering platform-specific surprises are much smaller.

Based on the preceding criteria, the best platforms for running MySQL at this point are x86 with SuSE Linux using a 2.4 kernel, and ReiserFS (or any similar Linux distribution) and SPARC with Solaris (2.7-9). FreeBSD comes third, but we really hope it will join the top club once the thread library is improved. We also hope that at some point we will be able to include into the top category all other platforms on which MySQL currently compiles and runs okay, but not quite with the same level of stability and performance. This will require some effort on our part in cooperation with the developers of the operating system and library components that MySQL depends on. If you are interested in improving one of those components , are in a position to influence its development, and need more detailed instructions on what MySQL needs to run better, send an email message to the MySQL internals mailing list. See Section 1.7.1.1, "The MySQL Mailing Lists."

Please note that the purpose of the preceding comparison is not to say that one operating system is better or worse than another in general. We are talking only about choosing an OS for the specific purpose of running MySQL. With this in mind, the result of this comparison would be different if we considered more factors. In some cases, the reason one OS is better than the other could simply be that we have been able to put more effort into testing and optimizing for a particular platform. We are just stating our observations to help you decide which platform to use for running MySQL.

2.1.2 Choosing Which MySQL Distribution to Install

When preparing to install MySQL, you should decide which version to use. MySQL development occurs in several release series, and you can pick the one that best fits your needs. After deciding which version to install, you can choose a distribution format. Releases are available in binary or source format.

2.1.2.1 Choosing Which Version of MySQL to Install

The first decision to make is whether you want to use a production (stable) release or a development release. In the MySQL development process, multiple release series co-exist, each at a different stage of maturity:

  • MySQL 5.0 is the newest development release series and is under very active development for new features. Until recently it was available only in preview form from the BitKeeper source repository. An early alpha release has now been issued to allow more widespread testing.

  • MySQL 4.1 is a development release series to which major new features have been added. It is currently at beta status. Sources and binaries are available for use and testing on development systems.

  • MySQL 4.0 is the current stable (production-quality) release series. New releases are issued for bugfixes. No new features are added that could diminish the code stability.

  • MySQL 3.23 is the old stable (production-quality) release series. This series is retired , so new releases are issued only to fix critical bugs .

We don't believe in a complete freeze, as this also leaves out bugfixes and things that "must be done." "Somewhat frozen" means that we may add small things that "almost surely will not affect anything that's already working." Naturally, relevant bugfixes from an earlier series propagate to later series.

Normally, if you are beginning to use MySQL for the first time or trying to port it to some system for which there is no binary distribution, we recommend going with the production release series. Currently this is MySQL 4.0. All MySQL releases, even those from development series, are checked with the MySQL benchmarks and an extensive test suite before being issued.

If you are running an old system and want to upgrade, but don't want to take the chance of having a non-seamless upgrade, you should upgrade to the latest version in the same release series you are using (where only the last part of the version number is newer than yours). We have tried to fix only fatal bugs and make small, relatively safe changes to that version.

If you want to use new features not present in the production release series, you can use a version from a development series. Note that development releases are not as stable as production releases.

If you want to use the very latest sources containing all current patches and bugfixes, you can use one of our BitKeeper repositories. These are not "releases" as such, but are available as previews of the code on which future releases will be based.

The MySQL naming scheme uses release names that consist of three numbers and a suffix; for example, mysql-4.1.2-alpha . The numbers within the release name are interpreted like this:

  • The first number ( 4 ) is the major version and also describes the file format. All Version 4 releases have the same file format.

  • The second number ( 1 ) is the release level. Taken together, the major version and release level constitute the release series number.

  • The third number ( 2 ) is the version number within the release series. This is incremented for each new release. Usually you want the latest version for the series you have chosen .

For each minor update, the last number in the version string is incremented. When there are major new features or minor incompatibilities with previous versions, the second number in the version string is incremented. When the file format changes, the first number is increased.

Release names also include a suffix to indicate the stability level of the release. Releases within a series progress through a set of suffixes to indicate how the stability level improves . The possible suffixes are:

  • alpha indicates that the release contains some large section of new code that hasn't been 100% tested. Known bugs (usually there are none) should be documented in the News section of the online manual at http://dev.mysql.com/doc/mysql/en/News.html. There are also new commands and extensions in most alpha releases. Active development that may involve major code changes can occur in an alpha release, but everything will be tested before issuing a release. For this reason, there should be no known bugs in any MySQL release.

  • beta means that all new code has been tested. No major new features that could cause corruption in old code are added. There should be no known bugs. A version changes from alpha to beta when there haven't been any reported fatal bugs within an alpha version for at least a month and we have no plans to add any features that could make any old command unreliable.

  • gamma is a beta that has been around a while and seems to work fine. Only minor fixes are added. This is what many other companies call a release.

  • If there is no suffix, it means that the version has been run for a while at many different sites with no reports of bugs other than platform-specific bugs. Only critical bugfixes are applied to the release. This is what we call a production (stable) release.

MySQL uses a naming scheme that is slightly different from most other products. In general, it's relatively safe to use any version that has been out for a couple of weeks without being replaced with a new version within the release series.

All releases of MySQL are run through our standard tests and benchmarks to ensure that they are relatively safe to use. Because the standard tests are extended over time to check for all previously found bugs, the test suite keeps getting better.

All releases have been tested at least with:

  • An internal test suite

    The mysql-test directory contains an extensive set of test cases. We run these tests for virtually every server binary.

  • The MySQL benchmark suite

    This suite runs a range of common queries. It is also a test to see whether the latest batch of optimizations actually made the code faster. See Section 6.1.4, "The MySQL Benchmark Suite."

  • The crash-me test

    This test tries to determine what features the database supports and what its capabilities and limitations are. See Section 6.1.4, "The MySQL Benchmark Suite."

Another test is that we use the newest MySQL version in our internal production environment, on at least one machine. We have more than 100GB of data to work with.

2.1.2.2 Choosing a Distribution Format

After choosing which version of MySQL to install, you should decide whether to use a binary distribution or a source distribution. In most cases, you should probably use a binary distribution, if one exists for your platform. Binary distributions are available in native format for many platforms, such as RPM files for Linux or DMG package installers for Mac OS X. Distributions also are available as Zip archives or compressed tar files.

Reasons to choose a binary distribution include the following:

  • Binary distributions generally are easier to install than source distributions.

  • To satisfy different user requirements, we provide two different binary versions: one compiled with the non-transactional storage engines (a small, fast binary), and one configured with the most important extended options like transaction-safe tables. Both versions are compiled from the same source distribution. All native MySQL clients can connect to servers from either MySQL version.

    The extended MySQL binary distribution is marked with the -max suffix and is configured with the same options as mysqld-max . See Section 4.1.2, "The mysqld-max Extended MySQL Server."

    If you want to use the MySQL-Max RPM, you must first install the standard MySQL-server RPM.

Under some circumstances, you probably will be better off installing MySQL from a source distribution:

  • You want to install MySQL at some explicit location. The standard binary distributions are "ready to run" at any place, but you may want to have even more flexibility to place MySQL components where you want.

  • You want to configure mysqld with some extra features that are not included in the standard binary distributions. Here is a list of the most common extra options that you may want to use:

    • --with-innodb (default for MySQL 4.0 and up)

    • -with-berkeley-db (not available on all platforms)

    • --with-raid

    • --with-libwrap

    • --with-named-z-libs (this is done for some of the binaries)

    • --with-debug[=full]

  • You want to configure mysqld without some features that are included in the standard binary distributions. For example, distributions normally are compiled with support for all character sets. If you want a smaller MySQL server, you can recompile it with support for only the character sets you need.

  • You have a special compiler (such as pgcc ) or want to use compiler options that are better optimized for your processor. Binary distributions are compiled with options that should work on a variety of processors from the same processor family.

  • You want to use the latest sources from one of the BitKeeper repositories to have access to all current bugfixes. For example, if you have found a bug and reported it to the MySQL development team, the bugfix will be committed to the source repository and you can access it there. The bugfix will not appear in a release until a release actually is issued.

  • You want to read (or modify) the C and C++ code that makes up MySQL. For this purpose, you should get a source distribution, because the source code is always the ultimate manual.

  • Source distributions contain more tests and examples than binary distributions.

2.1.2.3 How and When Updates Are Released

MySQL is evolving quite rapidly here at MySQL AB and we want to share new developments with other MySQL users. We try to make a release when we have very useful features that others seem to have a need for.

We also try to help out users who request features that are easy to implement. We take note of what our licensed users want to have, and we especially take note of what our extended email-supported customers want and try to help them out.

No one has to download a new release. The News section of the online manual will tell you if the new release has something you really want. See http://dev.mysql.com/doc/mysql/en/News.html.

We use the following policy when updating MySQL:

  • Releases are issued within each series. For each release, the last number in the version is one more than the previous release within the same series.

  • Production (stable) releases are meant to appear about 1-2 times a year. However, if small bugs are found, a release with only bugfixes will be issued.

  • Working releases/bugfixes to old releases are meant to appear about every 4-8 weeks.

  • Binary distributions for some platforms are made by us for major releases. Other people may make binary distributions for other systems, but probably less frequently.

  • We make fixes available as soon as we have identified and corrected small or non-critical but annoying bugs. The fixes are available immediately from our public BitKeeper repositories, and will be included in the next release.

  • If by any chance a fatal bug is found in a release, we will make a new release as soon as possible. (We would like other companies to do this, too!)

2.1.2.4 Release Philosophy ”No Known Bugs in Releases

We put a lot of time and effort into making our releases bug-free. To our knowledge, we have not released a single MySQL version with any known "fatal" repeatable bugs. (A "fatal" bug is something that crashes MySQL under normal usage, produces incorrect answers for normal queries, or has a security problem.)

We have documented all open problems, bugs, and issues that are dependent on design decisions. See Section 1.8.7, "Known Errors and Design Deficiencies in MySQL."

Our aim is to fix everything that is fixable without risk of making a stable MySQL version less stable. In certain cases, this means we can fix an issue in the development versions, but not in the stable (production) version. Naturally, we document such issues so that users are aware of them.

Here is a description of how our build process works:

  • We monitor bugs from our customer support list, the bugs database at http://bugs.mysql.com/, and the MySQL external mailing lists.

  • All reported bugs for live versions are entered into the bugs database.

  • When we fix a bug, we always try to make a test case for it and include it into our test system to ensure that the bug will never recur without being detected . (About 90% of all fixed bugs have a test case.)

  • We create test cases for all new features we add to MySQL.

  • Before we start to build a new MySQL release, we ensure that all reported repeatable bugs for the MySQL version (3.23.x, 4.0.x, etc) are fixed. If something is impossible to fix (due to some internal design decision in MySQL), we document this in the manual. See Section 1.8.7, "Known Errors and Design Deficiencies in MySQL."

  • We do a build on all platforms for which we support binaries (15+ platforms) and run our test suite and benchmark suite on all of them.

  • We will not publish a binary for a platform for which the test or benchmark suite fails. If the problem is due to a general error in the source, we fix it and do the build plus tests on all systems again from scratch.

  • The build and test process takes 2-3 days. If we receive a report regarding a fatal bug during this process (for example, one that causes a core dump), we fix the problem and restart the build process.

  • After publishing the binaries on http://dev.mysql.com/, we send out an announcement message to the mysql and announce mailing lists. See Section 1.7.1.1, "The MySQL Mailing Lists." The announcement message contains a list of all changes to the release and any known problems with the release. The Known Problems section in the release notes has been needed for only a handful of releases.

  • To quickly give our users access to the latest MySQL features, we do a new MySQL release every 4-8 weeks. Source code snapshots are built daily and are available at http://downloads.mysql.com/snapshots.php.

  • If, despite our best efforts, we get any bug reports that, after the release is done, there was something critically wrong with the build on a specific platform, we will fix it at once and build a new 'a' release for that platform. Thanks to our large user base, problems are found quickly.

  • Our track record for making good releases is quite good. In the last 150 releases, we had to do a new build for fewer than 10 releases. In three of these cases, the bug was a faulty glibc library on one of our build machines that took us a long time to track down.

2.1.2.5 MySQL Binaries Compiled by MySQL AB

As a service of MySQL AB, we provide a set of binary distributions of MySQL that are compiled on systems at our site or on systems where supporters of MySQL kindly have given us access to their machines.

In addition to the binaries provided in platform-specific package formats, we offer binary distributions for a number of platforms in the form of compressed tar files ( .tar.gz files). See Section 2.2, "Standard MySQL Installation Using a Binary Distribution."

For Windows distributions, see Section 2.2.1, "Installing MySQL on Windows."

These distributions are generated using the script Build-tools/Do-compile , which compiles the source code and creates the binary tar.gz archive using scripts/make_binary_distribution .

These binaries are configured and built with the following compilers and options. This information can also be obtained by looking at the variables COMP_ENV_INFO and CONFIGURE_LINE inside the script bin/ mysqlbug of every binary tar file distribution.

The following binaries are built on MySQL AB development systems:

  • Linux 2.4.xx x86 with gcc 2.95.3:

     

     CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" graphics/ccc.gif ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared graphics/ccc.gif --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 

  • Linux 2.4.xx Intel Itanium 2 with ecc (Intel C++ Itanium Compiler 7.0):

     

     CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" graphics/ccc.gif ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile 

  • Linux 2.4.xx Intel Itanium with ecc (Intel C++ Itanium Compiler 7.0):

     

     CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile 

  • Linux 2.4.xx alpha with ccc (Compaq C V6.2-505 / Compaq C++ V6.3-006):

     

     CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions graphics/ccc.gif -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared graphics/ccc.gif --with-client-ldflags=-non_shared --disable-shared 

  • Linux 2.x.xx ppc with gcc 2.95.4:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-embedded-server --with-innodb 

  • Linux 2.4.xx s390 with gcc 2.95.3:

     

     CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local graphics/ccc.gif /mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 

  • Linux 2.4.xx x86_64 (AMD64) with gcc 3.2.1:

     

     CXX=gcc ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --disable-shared 

  • Sun Solaris 8 x86 with gcc 3.2.3:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-innodb 

  • Sun Solaris 8 SPARC with gcc 3.2:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared 

  • Sun Solaris 8 SPARC 64-bit with gcc 3.2:

     

     CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -m64 graphics/ccc.gif -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure graphics/ccc.gif --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client graphics/ccc.gif --enable-local-infile --with-named-z-libs=no --with-named-curses-libs=-lcurses graphics/ccc.gif --disable-shared 

  • Sun Solaris 9 SPARC with gcc 2.95.3:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --enable-assembler --with-named-curses-libs=-lcurses --disable-shared 

  • Sun Solaris 9 SPARC with cc-5.0 (Sun Forte 5.0):

     

     CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" graphics/ccc.gif CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared 

  • IBM AIX 4.3.2 ppc with gcc 3.2.3:

     

     CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa, -many graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-named-z-libs=no --disable-shared 

  • IBM AIX 4.3.3 ppc with xlC_r (IBM Visual Age C/C++ 6.0):

     

     CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS ="-ma -O2 graphics/ccc.gif -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-named-z-libs=no --disable-shared --with-innodb 

  • IBM AIX 5.1.0 ppc with gcc 3.3:

     

     CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa, -many graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-named-z-libs=no --disable-shared 

  • IBM AIX 5.2.0 ppc with xlC_r (IBM Visual Age C/C++ 6.0):

     

     CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS="-ma -O2 graphics/ccc.gif -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-named-z-libs=no --disable-shared --with-embedded-server --with-innodb 

  • HP-UX 10.20 pa-risc1.1 with gcc 3.1:

     

     CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local graphics/ccc.gif /mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared 

  • HP-UX 11.00 pa-risc with aCC (HP ANSI C++ B3910B A.03.50):

     

     CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure --prefix=/usr/local graphics/ccc.gif /mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-embedded-server --with-innodb 

  • HP-UX 11.11 pa-risc2.0 64bit with aCC (HP ANSI C++ B3910B A.03.33):

     

     CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared 

  • HP-UX 11.11 pa-risc2.0 32bit with aCC (HP ANSI C++ B3910B A.03.33):

     

     CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure --prefix=/usr/local graphics/ccc.gif /mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-innodb 

  • HP-UX 11.22 ia64 64bit with aCC (HP aC++/ANSI C B3910B A.05.50):

     

     CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2" ./configure graphics/ccc.gif --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local graphics/ccc.gif /mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared --with-embedded-server --with-innodb 

  • Apple Mac OS X 10.2 powerpc with gcc 3.1:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared 

  • FreeBSD 4.7 i386 with gcc 2.95.4:

     

     CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --enable-assembler --with-named-z-libs=not-used --disable-shared 

  • FreeBSD 4.7 i386 using LinuxThreads with gcc 2.95.4:

     

     CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local graphics/ccc.gif /include/pthread/linuxthreads" CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT graphics/ccc.gif -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure --prefix=/usr/local graphics/ccc.gif /mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --enable-assembler graphics/ccc.gif --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R -D_THREAD_SAFE -I /usr/local graphics/ccc.gif /include/pthread/linuxthreads -L/usr/local/lib -llthread -llgcc_r" --disable-shared graphics/ccc.gif --with-embedded-server --with-innodb 

  • QNX Neutrino 6.2.1 i386 with gcc 2.95.3qnx-nto 20010315:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared 

The following binaries are built on third-party systems kindly provided to MySQL AB by other users. These are provided only as a courtesy ; MySQL AB does not have full control over these systems, so we can provide only limited support for the binaries built on them.

  • SCO Unix 3.2v5.0.6 i386 with gcc 2.95.3:

     

     CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium graphics/ccc.gif -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no graphics/ccc.gif --enable-thread-safe-client --disable-shared 

  • SCO OpenUnix 8.0.0 i386 with CC 3.2:

     

     CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --with-named-z-libs=no --enable-thread-safe-client --disable-shared 

  • Compaq Tru64 OSF/1 V5.1 732 alpha with cc/cxx (Compaq C V6.3-029i / DIGITAL C++ V6.1-027):

     

     CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" graphics/ccc.gif CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all graphics/ccc.gif -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --with-prefix=/usr/local/mysql graphics/ccc.gif --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared graphics/ccc.gif --with-mysqld-ldflags=-all-static 

  • SGI Irix 6.5 IP32 with gcc 3.0.1:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --disable-shared 

  • FreeBSD/sparc64 5.0 with gcc 3.2.1:

     

     CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --localstatedir=/usr graphics/ccc.gif /local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex graphics/ccc.gif --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb 

The following compile options have been used for binary packages that MySQL AB provided in the past. These binaries no longer are being updated, but the compile options are listed here for reference purposes.

  • Linux 2.2.xx SPARC with egcs 1.1.2:

     

     CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer graphics/ccc.gif -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile graphics/ccc.gif --enable-assembler --disable-shared 

  • Linux 2.2.x with x686 with gcc 2.95.2:

     

     CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors graphics/ccc.gif -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler graphics/ccc.gif --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex 

  • SunOS 4.1.4 2 sun4c with gcc 2.7.2.1:

     

     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql graphics/ccc.gif --disable-shared --with-extra-charsets=complex --enable-assembler 

  • SunOS 5.5.1 (and above) sun4u with egcs 1.0.3a or 2.90.27 or gcc 2.95.2 and newer:

     

     CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" graphics/ccc.gif ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex graphics/ccc.gif --enable-assembler 

  • SunOS 5.6 i86pc with gcc 2.8.1:

     

     CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory graphics/ccc.gif --with-extra-charsets=complex 

  • BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1:

     

     CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex 

  • BSDI BSD/OS 2.1 i386 with gcc 2.7.2:

     

     CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex 

  • AIX 2 4 with gcc 2.7.2.2:

     

     CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql graphics/ccc.gif --with-extra-charsets=complex 

Anyone who has more optimal options for any of the preceding configurations listed can always mail them to the MySQL internals mailing list. See Section 1.7.1.1, "The MySQL Mailing Lists."

RPM distributions prior to MySQL 3.22 are user- contributed . Beginning with MySQL 3.22, RPM distributions are generated by MySQL AB.

If you want to compile a debug version of MySQL, you should add --with-debug or --with-debug=full to the preceding configure lines and remove any -fomit-frame-pointer options.

2.1.3 How to Get MySQL

Check the MySQL home page (http://www.mysql.com/) for information about the current version and for downloading instructions.

Our main mirror is located at http://mirrors.sunsite.dk/mysql/.

For a complete up-to-date list of MySQL download mirror sites, see http://dev.mysql.com/downloads/mirrors.html. There you will also find information about becoming a MySQL mirror site and how to report a bad or out-of-date mirror.

2.1.4 Verifying Package Integrity Using MD5 Checksums or GnuPG

After you have downloaded the MySQL package that suits your needs and before you attempt to install it, you should make sure that it is intact and has not been tampered with. MySQL AB offers three means of integrity checking:

  • MD5 checksums

  • Cryptographic signatures using GnuPG , the GNU Privacy Guard

  • For RPM packages, the built-in RPM integrity verification mechanism

The following sections describe how to use these methods .

If you notice that the MD5 checksum or GPG signatures do not match, first try to download the respective package one more time, perhaps from another mirror site. If you repeatedly cannot successfully verify the integrity of the package, please notify us about such incidents, including the full package name and the download site you have been using, at webmaster@mysql.com or build@mysql.com. Do not report downloading problems using the bug-reporting system.

2.1.4.1 Verifying the MD5 Checksum

After you have downloaded a MySQL package, you should make sure that its MD5 checksum matches the one provided on the MySQL download pages. Each package has an individual checksum that you can verify with the following command, where package_name is the name of the package you downloaded:

 

 shell>  md5sum   package_name  

Example:

 

 shell>  md5sum mysql-standard-4.0.17-pc-linux-i686.tar.gz  60f5fe969d61c8f82e4f7f62657e1f06  mysql-standard-4.0.17-pc-linux-i686.tar.gz 

You should verify that the resulting checksum (the string of hexadecimal digits) matches the one displayed on the download page immediately below the respective package.

Note that not all operating systems support the md5sum command. On some, it is simply called md5 and others do not ship it at all. On Linux, it is part of the GNU Text Utilities package, which is available for a wide range of platforms. You can download the source code from http://www.gnu.org/software/textutils/ as well. If you have OpenSSL installed, you can also use the command openssl md5 package_name instead. A DOS/Windows implementation of the md5 command is available from http://www.fourmilab.ch/md5/.

2.1.4.2 Signature Checking Using GnuPG

Another method of verifying the integrity and authenticity of a package is to use cryptographic signatures. This is more reliable than using MD5 checksums, but requires more work.

Beginning with MySQL 4.0.10 (February 2003), MySQL AB started signing downloadable packages with GnuPG ( GNU Privacy Guard ). GnuPG is an Open Source alternative to the very well-known Pretty Good Privacy ( PGP ) by Phil Zimmermann. See http://www.gnupg.org/ for more information about GnuPG and how to obtain and install it on your system. Most Linux distributions already ship with GnuPG installed by default. For more information about OpenPGP , see http://www.openpgp.org/.

To verify the signature for a specific package, you first need to obtain a copy of MySQL AB's public GPG build key. You can download the key from http://www.keyserver.net/. The key that you want to obtain is named build@mysql.com. Alternatively, you can cut and paste the key directly from the following text:

 

 Key ID: pub  1024D/5072E1F5 2003-02-03      MySQL Package signing key (www.mysql.com) <build@mysql.com> Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5 Public Key (ASCII-armored): -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3 RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3 BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE 7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p /1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92 6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ== =YJkx -----END PGP PUBLIC KEY BLOCK----- 

You can import the build key into your personal public GPG keyring by using gpg --import .

For example, if you save the key in a file named mysql_pubkey.asc , the import command looks like this:

 

 shell>  gpg --import mysql_pubkey.asc  

See the GPG documentation for more information on how to work with public keys.

After you have downloaded and imported the public build key, download your desired MySQL package and the corresponding signature, which also is available from the download page. The signature file has the same name as the distribution file with an .asc extension. For example:

Distribution file

mysql-standard-4.0.17-pc-linux-i686.tar.gz

Signature file

mysql-standard-4.0.17-pc-linux-i686.tar.gz.asc


Make sure that both files are stored in the same directory and then run the following command to verify the signature for the distribution file:

 

 shell>  gpg --verify   package_name   .asc  

Example:

 

 shell>  gpg --verify mysql-standard-4.0.17-pc-linux-i686.tar.gz.asc  gpg: Warning: using insecure memory! gpg: Signature made Mon 03 Feb 2003 08:50:39 PM MET using DSA key ID 5072E1F5 gpg: Good signature from      "MySQL Package signing key (www.mysql.com) <build@mysql.com>" 

The Good signature message indicates that everything is all right. You can ignore the insecure memory warning.

2.1.4.3 Signature Checking Using RPM

For RPM packages, there is no separate signature. RPM packages have a built-in GPG signature and MD5 checksum. You can verify a package by running the following command:

 

 shell>  rpm --checksig   package_name   .rpm  

Example:

 

 shell>  rpm --checksig MySQL-server-4.0.10-0.i386.rpm  MySQL-server-4.0.10-0.i386.rpm: md5 gpg OK 

Note: If you are using RPM 4.1 and it complains about (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) , even though you have imported the MySQL public build key into your own GPG keyring, you need to import the key into the RPM keyring first. RPM 4.1 no longer uses your personal GPG keyring (or GPG itself). Rather, it maintains its own keyring because it is a system-wide application and a user's GPG public keyring is a user-specific file. To import the MySQL public key into the RPM keyring, first obtain the key as described in the previous section. Then use rpm --import to import the key. For example, if you have the public key stored in a file named mysql_pubkey.asc , import it using this command:

 

 shell>  rpm --import mysql_pubkey.asc  

2.1.5 Installation Layouts

This section describes the default layout of the directories created by installing binary or source distributions provided by MySQL AB. If you install a distribution provided by another vendor, some other layout might be used.

On Windows, the default installation directory is C:\mysql , which has the following subdirectories:

Directory

Contents of Directory

bin

Client programs and the mysqld server

data

Log files, databases

Docs

Documentation

examples

Example programs and scripts

include

Include (header) files

lib

Libraries

scripts

Utility scripts

share

Error message files


Installations created from Linux RPM distributions result in files under the following system directories:

Directory

Contents of Directory

/usr/bin

Client programs and scripts

/usr/sbin

The mysqld server

/var/lib/mysql

Log files, databases

/usr/share/doc/packages

Documentation

include/usr/include/mysql

Include (header) files

lib/usr/lib/mysql

Libraries

/usr/share/mysql

Error message and character set files

sql-bench/usr/share/sql-bench

Benchmarks


On Unix, a tar file binary distribution is installed by unpacking it at the installation location you choose (typically /usr/local/mysql ) and creates the following directories in that location:

Directory

Contents of Directory

bin

Client programs and the mysqld server

data

Log files, databases

docs

Documentation, ChangeLog

include

Include (header) files

lib

Libraries

scripts

mysql_install_db

share/mysql

Error message files

sql-bench

Benchmarks


A source distribution is installed after you configure and compile it. By default, the installation step installs files under /usr/local , in the following subdirectories:

Directory

Contents of Directory

bin

Client programs and scripts

include/mysql

Include (header) files

info

Documentation in Info format

lib/mysql

Libraries

libexec

The mysqld server

share/mysql

Error message files

sql-bench

Benchmarks and crash-me test

var

Databases and log files


Within an installation directory, the layout of a source installation differs from that of a binary installation in the following ways:

  • The mysqld server is installed in the libexec directory rather than in the bin directory.

  • The data directory is var rather than data .

  • mysql_install_db is installed in the bin directory rather than in the scripts directory.

  • The header file and library directories are include/mysql and lib/mysql rather than include and lib .

You can create your own binary installation from a compiled source distribution by executing the scripts/make_binary_distribution script from the top directory of the source distribution.

 <  Day Day Up  >  


MySQL AB MySQL Administrator[ap]s Guide
MySQL AB MySQL Administrator[ap]s Guide
ISBN: 782142591
EAN: N/A
Year: 2004
Pages: 138

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net