2.16.6. Installing MySQL from Source on Windows

   These instructions describe how to build binaries from source
   for MySQL 5.0 on Windows. Instructions are provided for
   building binaries from a standard source distribution or from
   the Bazaar tree that contains the latest development source.

Note

   The instructions here are strictly for users who want to test
   MySQL on Microsoft Windows from the latest source
   distribution or from the Bazaar tree. For production use, we
   do not advise using a MySQL server built by yourself from
   source. Normally, it is best to use precompiled binary
   distributions of MySQL that are built specifically for
   optimal performance on Windows by Sun Microsystems, Inc.
   Instructions for installing binary distributions are
   available in Section 2.9, "Installing MySQL on Windows."

   To build MySQL on Windows from source, you must satisfy the
   following system, compiler, and resource requirements:

     * Windows 2000, Windows XP, or newer version.
       Windows Vista is supported when using Visual Studio 2005
       provided you have installed the following updates:

          + Microsoft Visual Studio 2005 Professional Edition -
            ENU Service Pack 1 (KB926601)
            (http://support.microsoft.com/?kbid=926601)

          + Security Update for Microsoft Visual Studio 2005
            Professional Edition - ENU (KB937061)
            (http://support.microsoft.com/?kbid=937061)

          + Update for Microsoft Visual Studio 2005 Professional
            Edition - ENU (KB932232)
            (http://support.microsoft.com/?kbid=932232)

     * To build from the standard source distribution, you will
       need CMake, which can be downloaded from
       http://www.cmake.org. After installing, modify your path
       to include the cmake binary.

     * Microsoft Visual C++ 2005 Express Edition, Visual Studio
       .Net 2003 (7.1), or Visual Studio 2005 (8.0) compiler
       system.

     * If you are using Visual C++ 2005 Express Edition, you
       must also install an appropriate Platform SDK. More
       information and links to downloads for various Windows
       platforms is available from
       http://www.microsoft.com/downloads/details.aspx?familyid=
       0baf2b35-c656-4969-ace8-e4c0c0716adb.

     * If you are compiling from a Bazaar tree or making changes
       to the parser, you need bison for Windows, which can be
       downloaded from
       http://gnuwin32.sourceforge.net/packages/bison.htm.
       Download the package labeled "Complete package, excluding
       sources". After installing the package, modify your path
       to include the bison binary and ensure that this binary
       is accessible from Visual Studio.

     * Cygwin might be necessary if you want to run the test
       script or package the compiled binaries and support files
       into a Zip archive. (Cygwin is needed only to test or
       package the distribution, not to build it.) Cygwin is
       available from http://cygwin.com.

     * 3GB to 5GB of disk space.

   The exact system requirements can be found here:
   http://msdn.microsoft.com/vstudio/Previous/2003/sysreqs/defau
   lt.aspx and
   http://msdn.microsoft.com/vstudio/products/sysreqs/default.as
   px

   There are three solutions available for building from the
   source code on Windows:

     * Build from the standard MySQL source distribution. For
       this you will need CMake and Visual C++ Express Edition
       or Visual Studio. Using this method you can select the
       storage engines that are included in your build. To use
       this method, see Section 2.16.6.1, "Building MySQL from
       the Standard Source Distribution."

     * Build from the MySQL Windows source distribution. The
       Windows source distribution includes ready-made Visual
       Studio solution files that enable support for all storage
       engines (except NDB). To build using using method you
       only need Visual C++ Express Edition or Visual Studio. To
       use this method, see Section 2.16.6.2, "Building MySQL
       from a Windows Source Distribution."

     * Build directly from the Bazaar source repository. For
       this you will need CMake, Visual C++ Express Edition or
       Visual Studio, and bison. For this method you need to
       create the distribution on a Unix system and then copy
       the generated files to your Windows build environment. To
       use this method, see Section 2.16.6.5, "Creating a
       Windows Source Package from the Bazaar Repository."

   If you find something not working as expected, or you have
   suggestions about ways to improve the current build process
   on Windows, please send a message to the win32 mailing list.
   See Section 1.5.1, "MySQL Mailing Lists."

2.16.6.1. Building MySQL from the Standard Source Distribution

   You can build MySQL on Windows by using a combination of
   cmake and Microsoft Visual Studio .NET 2003 (7.1), Microsoft
   Visual Studio 2005 (8.0) or Microsoft Visual C++ 2005 Express
   Edition. You must have the appropriate Microsoft Platform SDK
   installed.

Note

   To compile from the source code using CMake you must use the
   standard source distribution (for example,
   mysql-5.0.87.tar.gz). You build from the same distribution as
   used to build MySQL on Unix, Linux and other platforms. Do
   not use the Windows Source distributions as they do not
   contain the necessary configuration script and other files.

   Follow this procedure to build MySQL:

    1. If you are installing from a packaged source
       distribution, create a work directory (for example,
       C:\workdir), and unpack the source distribution there
       using WinZip or another Windows tool that can read .zip
       files. This directory is the work directory in the
       following instructions.

    2. If you are installing from a Bazaar tree, the root
       directory of that tree is the work directory in the
       following instructions.

    3. Using a command shell, navigate to the work directory and
       run the following command:
C:\workdir>win\configure.js options

       If you have associated the .js file extension with an
       application such as a text editor, then you may need to
       use the following command to force configure.js to be
       executed as a script:
C:\workdir>cscript win\configure.js options

       These options are available for configure.js:

          + WITH_INNOBASE_STORAGE_ENGINE: Enable the InnoDB
            storage engine.

          + WITH_PARTITION_STORAGE_ENGINE: Enable user-defined
            partitioning.

          + WITH_ARCHIVE_STORAGE_ENGINE: Enable the ARCHIVE
            storage engine.

          + WITH_BLACKHOLE_STORAGE_ENGINE: Enable the BLACKHOLE
            storage engine.

          + WITH_EXAMPLE_STORAGE_ENGINE: Enable the EXAMPLE
            storage engine.

          + WITH_FEDERATED_STORAGE_ENGINE: Enable the FEDERATED
            storage engine.

          + MYSQL_SERVER_SUFFIX=suffix: Server suffix, default
            none.

          + COMPILATION_COMMENT=comment: Server comment, default
            "Source distribution".

          + MYSQL_TCP_PORT=port: Server port, default 3306.

          + DISABLE_GRANT_OPTIONS: Disables the the --bootstrap,
            --skip-grant-tables, and --init-file options for
            mysqld. This option is available as of MySQL 5.0.36.
       For example (type the command on one line):
C:\workdir>win\configure.js WITH_INNOBASE_STORAGE_ENGINE >>
             WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro


    4. From the work directory, execute the win\build-vs8.bat or
       win\build-vs71.bat file, depending on the version of
       Visual Studio you have installed. The script invokes
       CMake, which generates the mysql.sln solution file you
       will need to build MySQL using Visual Studio..
       You can also use win\build-vs8_x64.bat to build the
       64-bit version of MySQL. However, you cannot build the
       64-bit version with Visual Studio Express Edition. You
       must use Visual Studio 2005 (8.0) or higher.

    5. From the work directory, open the generated mysql.sln
       file with Visual Studio and select the proper
       configuration using the Configuration menu. The menu
       provides Debug, Release, RelwithDebInfo, MinRelInfo
       options. Then select Solution > Build to build the
       solution.
       The build process will take some time. Please be patient.
       Remember the configuration that you use in this step. It
       is important later when you run the test script because
       that script needs to know which configuration you used.

    6. You should test you build before installation. See
       Section 2.16.6.4, "Testing a Windows Source Build."

    7. To install, use the instructions in Section 2.16.6.3,
       "Installing MySQL from a Source Build on Windows."

2.16.6.2. Building MySQL from a Windows Source Distribution

   The Windows source distribution includes the necessary
   solution file and the vcproj files required to build each
   component. Using this method you are not able to select the
   storage engines that are included in your build.

Note

   VC++ workspace files for MySQL 4.1 and above are compatible
   with Microsoft Visual Studio 7.1 and tested by us before each
   release.

   Follow this procedure to build MySQL:

    1. Create a work directory (for example, C:\workdir).

    2. Unpack the source distribution in the aforementioned
       directory using WinZip or another Windows tool that can
       read .zip files.

    3. Start Visual Studio .Net 2003 (7.1).

    4. From the File menu, select Open Solution....

    5. Open the mysql.sln solution you find in the work
       directory.

    6. From the Build menu, select Configuration Manager....

    7. In the Active Solution Configuration pop-up menu, select
       the configuration to use. You likely want to use one of
       nt (normal server), Max nt (more engines and features),
       or Debug configuration.

    8. From the Build menu, select Build Solution.

    9. Debug versions of the programs and libraries are placed
       in the client_debug and lib_debug directories. Release
       versions of the programs and libraries are placed in the
       client_release and lib_release directories.
   10. You should test you build before installation. See
       Section 2.16.6.4, "Testing a Windows Source Build."
   11. To install, use the instructions in Section 2.16.6.3,
       "Installing MySQL from a Source Build on Windows."

2.16.6.3. Installing MySQL from a Source Build on Windows

   When you are satisfied that the program you have built is
   working correctly, stop the server. Now you can install the
   distribution. There are two ways to do this, either by using
   the supplied installation script or by copying the files
   individually by hand.

   To use the script method you must have Cygwin installed as
   the script is a Shell script. To execute the installation
   process, run the make_win_bin_dist script in the scripts
   directory of the MySQL source distribution (see Section
   4.4.2, "make_win_bin_dist --- Package MySQL Distribution as
   ZIP Archive"). This is a shell script, so you must have
   Cygwin installed if you want to use it. It creates a Zip
   archive of the built executables and support files that you
   can unpack to your desired installation location.

   It is also possible to install MySQL by copying directories
   and files manually:

    1. Create the directories where you want to install MySQL.
       For example, to install into C:\mysql, use these
       commands:
shell> mkdir C:\mysql
shell> mkdir C:\mysql\bin
shell> mkdir C:\mysql\data
shell> mkdir C:\mysql\share
shell> mkdir C:\mysql\scripts

       If you want to compile other clients and link them to
       MySQL, you should also create several additional
       directories:
shell> mkdir C:\mysql\include
shell> mkdir C:\mysql\lib
shell> mkdir C:\mysql\lib\debug
shell> mkdir C:\mysql\lib\opt

       If you want to benchmark MySQL, create this directory:
shell> mkdir C:\mysql\sql-bench

       Benchmarking requires Perl support. See Section 2.21,
       "Perl Installation Notes."

    2. From the work directory, copy into the C:\mysql directory
       the following directories:
shell> cd \workdir
C:\workdir> copy client_release\*.exe C:\mysql\bin
C:\workdir> copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
C:\workdir> xcopy share\*.* C:\mysql\share /E

       If you want to compile other clients and link them to
       MySQL, you should also copy several libraries and header
       files:
C:\workdir> copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
C:\workdir> copy lib_debug\libmysql.* C:\mysql\lib\debug
C:\workdir> copy lib_debug\zlib.* C:\mysql\lib\debug
C:\workdir> copy lib_release\mysqlclient.lib C:\mysql\lib\opt
C:\workdir> copy lib_release\libmysql.* C:\mysql\lib\opt
C:\workdir> copy lib_release\zlib.* C:\mysql\lib\opt
C:\workdir> copy include\*.h C:\mysql\include
C:\workdir> copy libmysql\libmysql.def C:\mysql\include

       If you want to benchmark MySQL, you should also do this:
C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E

   After installation, set up and start the server in the same
   way as for binary Windows distributions. See Section 2.9,
   "Installing MySQL on Windows."

2.16.6.4. Testing a Windows Source Build

   You should test the server that you have built from source
   before using the distribution.

   To test the server you need to run the built mysqld. By
   default, using the source build examples, the MySQL base
   directory and data directory are C:\mysql and C:\mysql\data.
   If you want to test your server using the source tree root
   directory and its data directory as the base directory and
   data directory, you need to tell the server their path names.
   You can either do this on the command line with the --basedir
   and --datadir options, or by placing appropriate options in
   an option file. (See Section 4.2.3.3, "Using Option Files.")
   If you have an existing data directory elsewhere that you
   want to use, you can specify its path name instead.

   When the server is running in standalone fashion or as a
   service based on your configuration, try to connect to it
   from the mysql interactive command-line utility.

   You can also run the standard test script, mysql-test-run.pl.
   This script is written in Perl, so you'll need either Cygwin
   or ActiveState Perl to run it. You may also need to install
   the modules required by the script. To run the test script,
   change location into the mysql-test directory under the work
   directory, set the MTR_VS_CONFIG environment variable to the
   configuration you selected earlier (or use the --vs-config
   option), and invoke mysql-test-run.pl. For example (using
   Cygwin and the bash shell):
shell> cd mysql-test
shell> export MTR_VS_CONFIG=debug
shell> ./mysql-test-run.pl --force --timer
shell> ./mysql-test-run.pl --force --timer --ps-protocol

2.16.6.5. Creating a Windows Source Package from the Bazaar
Repository

   To create a Windows source package from the current Bazaar
   source tree, use the instructions here. This procedure must
   be performed on a system running a Unix or Unix-like
   operating system because some of the configuration and build
   steps require tools that work only on Unix. For example, the
   following procedure is known to work well on Linux.

    1. Copy the Bazaar source tree for MySQL 5.0. For
       instructions on how to do this, see Section 2.16.3,
       "Installing from the Development Source Tree."

    2. Configure and build the distribution so that you have a
       server binary to work with. One way to do this is to run
       the following command in the top-level directory of your
       source tree:
shell> ./BUILD/compile-pentium-max


    3. After making sure that the build process completed
       successfully, run the following utility script from
       top-level directory of your source tree:
shell> ./scripts/make_win_src_distribution

       This script creates a Windows source package to be used
       on your Windows system. You can supply different options
       to the script based on your needs. See Section 4.4.3,
       "make_win_src_distribution --- Create Source Distribution
       for Windows," for a list of allowable options.
       By default, make_win_src_distribution creates a
       Zip-format archive with the name
       mysql-VERSION-win-src.zip, where VERSION represents the
       version of your MySQL source tree.

    4. Copy or upload the Windows source package that you have
       just created to your Windows machine. To compile it, use
       the instructions in Section 2.16.6.2, "Building MySQL
       from a Windows Source Distribution."
