These instructions describe how to build binaries from source for MySQL 5.1 on Windows. Instructions are provided for building binaries from a standard source distribution or from the Bazaar tree that contains the latest development source.
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 Oracle Corporation. Instructions for installing binary distributions are available in Installing MySQL on Microsoft 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:
CMake, which can be downloaded from
http://www.cmake.org. After installing, modify
PATH environment variable to include
the directory where
cmake is located.
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
Download the package labeled “Complete package,
excluding sources”. After installing the package,
PATH environment variable to
include the directory where bison is
On Windows, the default location for
bison is the
Files\GnuWin32 directory. Some utilities,
including m4, may fail to find
bison because of the space in the
directory name. You can resolve this by installing into a
directory that does not contain a space; for example
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.
You also need a MySQL source distribution for Windows, which can be obtained two ways:
Obtain a source distribution packaged by Oracle Corporation. These are available from http://dev.mysql.com/downloads/.
Package a source distribution yourself from the latest Bazaar developer source tree. For instructions on pulling the latest source files, see Chapter 3, Installing MySQL Using a Development Source Tree.
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
mailing list. See MySQL Mailing Lists.
To compile from the source code on Windows you must use the
standard source distribution (for example,
mysql-5.1.74.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:
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
This directory is the work directory in the following
Commands that are located in the
directory should be executed from the top-level source
directory. Do not change location into the
win directory, as the commands will not
Start a command shell. If you have not configured the
PATH and other environment variables for
all command shells, you may be able to start a command shell
from the Start Menu within the Windows
Visual Studio menu that contains the necessary environment
Within the command shell, navigate to the work directory and run the following command:
If you have associated the
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:
These options are available for
InnoDB storage engine.
WITH_ARCHIVE_STORAGE_ENGINE: Enable the
ARCHIVE storage engine.
BLACKHOLE storage engine.
WITH_EXAMPLE_STORAGE_ENGINE: Enable the
EXAMPLE storage engine.
FEDERATED storage engine.
NDBCLUSTER storage engine
in the MySQL server; cause binaries for the MySQL Cluster
management and data node, management client, and other
programs to be built.
This option is supported only in MySQL Cluster NDB 7.0 and
engine versions 6.4.0 and later) using the MySQL Cluster
sources. It cannot be used to enable clustering support in
other MySQL source trees or distributions.
Server suffix, default none.
Server comment, default "Source distribution".
Server port, default 3306.
For example (type the command on one line):
From the work directory, execute the
win\build-vs9.bat (Windows Visual Studio
win\build-vs8.bat (Windows Visual
Studio 2005), or
(Windows Visual Studio 2003) script, depending on the version
of Visual Studio you have installed. The script invokes
CMake, which generates the
mysql.sln solution file.
You can also use the corresponding 64-bit file (for example
win\build-vs9_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.
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
MinRelInfo options. Then select
Build to build the solution.
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.
Test the server. The server built using the preceding
instructions expects that the MySQL base directory and data
C:\mysql\data by default. 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
--datadir options, or by
placing appropriate options in an option file. (See
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
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):
./mysql-test-run.pl --force --timershell>
./mysql-test-run.pl --force --timer --ps-protocol
When you are satisfied that the programs you have built are
working correctly, stop the server. Now you can install the
distribution. One way to do this is to use the
make_win_bin_dist script in the
scripts directory of the MySQL source
distribution (see 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 in the location at which you want to
It is also possible to install MySQL by copying directories and files directly:
Create the directories where you want to install MySQL. For
example, to install into
If you want to compile other clients and link them to MySQL, you should also create several additional directories:
If you want to benchmark MySQL, create this directory:
Benchmarking requires Perl support for MySQL. See Perl Installation Notes.
From the work directory, copy into the
C:\mysql directory the following files
copy client\Release\*.exe C:\mysql\binC:\workdir>
copy sql\Release\mysqld.exe C:\mysql\bin\mysqld.exeC:\workdir>
xcopy scripts\*.* C:\mysql\scripts /EC:\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:
copy lib\Release\mysqlclient.lib C:\mysql\lib\debugC:\workdir>
copy lib\Release\libmysql.* C:\mysql\lib\debugC:\workdir>
copy lib\Release\zlib.* C:\mysql\lib\debugC:\workdir>
copy lib\Release\mysqlclient.lib C:\mysql\lib\optC:\workdir>
copy lib\Release\libmysql.* C:\mysql\lib\optC:\workdir>
copy lib\Release\zlib.* C:\mysql\lib\optC:\workdir>
copy include\*.h C:\mysql\includeC:\workdir>
copy libmysql\libmysql.def C:\mysql\include
If you have compiled a Debug solution, rather than a Release
solution, install it by replacing
in the source file names just shown.
If you want to benchmark MySQL, you should also do this:
xcopy sql-bench\*.* C:\mysql\bench /E
After installation, set up and start the server in the same way as for binary Windows distributions. This includes creating the system tables by running mysql_install_db. For more information, see Installing MySQL on Microsoft Windows.