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), Microsoft Visual Studio 2008 (9.0) or Microsoft Visual C++ 2005 Express Edition. You must have the appropriate Microsoft Platform SDK installed.
To compile from the source code on Windows you must use the
standard source distribution (for example,
mysql-5.1.47.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 .zip
files. This directory is the work directory in the following
instructions.
You must run the commands in the win
directory from the top-level source directory. Do not
change into the win
directory, as the
commands will not be executed correctly.
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
changes.
Within the 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.
WITH_NDBCLUSTER_STORAGE_ENGINE
(experimental): Enable the
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
(NDBCLUSTER
storage 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.
MYSQL_SERVER_SUFFIX=
:
Server suffix, default none.
suffix
COMPILATION_COMMENT=
:
Server comment, default "Source distribution".
comment
MYSQL_TCP_PORT=
:
Server port, default 3306.
port
DISABLE_GRANT_OPTIONS
: Disables the
--bootstrap
,
--skip-grant-tables
, and
--init-file
options for
mysqld. This option is available as
of MySQL 5.1.15.
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
From the work directory, execute the
win\build-vs9.bat
(Windows Visual
Studio 2008), win\build-vs8.bat
(Windows Visual Studio 2005), or
win\build-vs71.bat
(Windows Visual
Stidion 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-vs8_x64.bat
or
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
Debug,
Release,
RelwithDebInfo,
MinRelInfo options. Then select
Solution >
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
directory are C:\mysql
and
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
--basedir
and
--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 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
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). 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 install MySQL.
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 C:\mysql
, use
these commands:
C:\>mkdir C:\mysql
C:\>mkdir C:\mysql\bin
C:\>mkdir C:\mysql\data
C:\>mkdir C:\mysql\share
C:\>mkdir C:\mysql\scripts
If you want to compile other clients and link them to MySQL, you should also create several additional directories:
C:\>mkdir C:\mysql\include
C:\>mkdir C:\mysql\lib
C:\>mkdir C:\mysql\lib\debug
C:\>mkdir C:\mysql\lib\opt
If you want to benchmark MySQL, create this directory:
C:\> mkdir C:\mysql\sql-bench
Benchmarking requires Perl support. See Perl Installation Notes.
From the work directory, copy into the
C:\mysql
directory the following files
and directories:
C:\>cd \workdir
C:\workdir>mkdir C:\mysql
C:\workdir>mkdir C:\mysql\bin
C:\workdir>copy client\Release\*.exe C:\mysql\bin
C:\workdir>copy sql\Release\mysqld.exe C:\mysql\bin\mysqld.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\Release\mysqlclient.lib C:\mysql\lib\debug
C:\workdir>copy lib\Release\libmysql.* C:\mysql\lib\debug
C:\workdir>copy lib\Release\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 have compiled a Debug, rather than Release
solution, you can replace Release
with Debug
in the source file names
shown above.
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. This includes creating the system tables by running mysql_install_db. For more information, see Installing MySQL on Windows.