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.4.3.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.
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.