<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
   <head>
      <title>Setting Up the MySQL Database Server in the Windows Operating System</title>
     <meta name="KEYWORDS" content="NETBEANS, CONFIGURE, PHP, Apache, MySQL server, windows">
      <meta name="DESCRIPTION" content="NETBEANS, CONFIGURE, PHP, Apache, MySQL server, under Windows" >
      <link rel="stylesheet" type="text/css" href="../../../netbeans.css" media="screen">  
   </head>
   <body>
<h1>Setting Up  the MySQL Database Server in the Windows Operating System </h1>
 The document recommends a sequence of steps to set up the MySQL database server in the Windows operating system. <br/>
<h2>Contents</h2>
<ul class="toc">
<li><a href="#gettingReady">Getting Ready</a></li>
<li><a href="#startingInstallation">Starting he Installation</a></li>
<li><a href="#configuringMySQL">Configuring MySQL Server</a>
  <ul>
<li><a href="#configurationType">Specifying Configuration Type</a></li>
<li><a href="#networkOptions">Setting the NetWorking Options</a></li>
<li><a href="#characterSetAndOS">Setting the Character Set and the Operating System Options</a></li>
<li><a href="#security">Specifying the Security Options</a></li>
<li><a href="#completingConfiguration">Completing   the Configuration</a></li>
</ul>
 </li>
<li><a href="#nextSteps">Next Steps</a></li>
</ul>
<h2><a name="gettingReady"></a>Getting Ready</h2>
<p>The MySQL database server is one of the most popular open-source database servers commonly used in web application development. </p>
<p>The recommended version of the product is MySQL Server 5.1. Downloads are available <a href="http://dev.mysql.com/downloads/" target="_blank">here</a>. The instructions provided in the current document only apply to the Windows operating system. This document does not cover MySQL configuration details, it only describes a sequence of required steps. </p>
<p>For information about installing and configuring MySQL database server for other operating systems, refer to the <a href="http://dev.mysql.com/doc/refman/5.1/en/" target="_blank">MySQL documentation</a>. </p>
<h2><a name="startingInstallation"></a>Starting the Installation </h2>
After the download is completed:
<ol>
  <li>On the Downloads panel, select  the downloaded <tt>MySQL</tt> installation file and click Open. The MySQL Server Setup Wizard starts. On the Welcome panel, click Next. </li>
  <li>On the Setup Type panel, choose the Custom option and click Next.</li>
  <li>On the Custom Setup panel, click Next. </li>
  <li>On the Ready to Install the Program panel, click Install.</li>
  <li>On the MySQL Enterprise panel, click Next.   </li>
</ol>
<h2><a name="configuringMySQL"></a>Configuring MySQL Server  </h2>
<ol>
  <li>On the Wizard Completed panel, switch on the Configure MySQL Server now checkbox and click Finish. The MySQL server Instance Configuration Wizard starts. </li>
  <li>On the Welcome panel, click Next.</li>
</ol>
<div class="indent"><h3><a name="configurationType"></a>Specifying Configuration Type </h3>
<ol>
  <li>On the Configuration Type panel, choose the Detailed Configuration option. Click Next.<br>
<strong>Note:</strong> Choosing this option is necessary to get to the panel for setting the network options where you will turn off the firewall for the port used by the MySQL server. </li>
  <li>Choose the Developer Machine option and click Next.  </li>
  <li>Choose the Multifunctional Database option and click Next. </li>
  <li>On the InnoDB Tablespace Settings panel, choose the drive and \MySQL Datafiles\click Next. </li>
  <li>Specify the approximate number of concurrent connections to the server - choose the Decision Support (DSS)/OLAP option. Click Next. </li>
</ol>
<h3><a name="networkOptions"></a>Setting the Networking Options </h3>
<ol>
  <li>Switch on the Enable TCP/IP Networking checkbox.</li>
  <li>In the Port Number: edit-box, specify the connection port. The default setting is 3306 - leave it unchanged if there is not special reason to change it.</li>
  <li>Switch on the Add firewall exception for this port. </li>
  <li>Switch on the Enable Strict Mode checkbox. Click Next. </li>
</ol>
<h3><a name="characterSetAndOS"></a>Setting the Character Set and the Operating System Options </h3>
<ol>
  <li>Specify the default character set and click Next. </li>
  <li>On the Set the Windows options panel, switch on the Install as Windows Service checkbox. To have the MySQL Server launched automatically, switch on the Launch the MySQL Server automatically checkbox. Click Next. </li>
</ol>
<h3><a name="security"></a>Specifying the Security Options </h3>
<ol>
  <li>Choose the Modify Security Settings option. !phpuser </li>
  <li>In the New root password, enter the root user's password.</li>
  <li>In the Confirm edit-box, retype the root user's password. </li>
  <li>Click Next.</li>
  <p><strong>Note:</strong> The root user is a user who has full access to the MySQL database server - creating, updating, and removing users, and so on. Remember the root password - you will need it later when creating a sample database.  </p>
</ol>
<h3><a name="completingConfiguration"></a>Completing the Configuration </h3>
<ol>
  <li>Click Execute to start the configuration. </li>
  <li>When the configuration is completed successfully, the information message appears. Click Finish. </li>
</ol>
<strong>Note</strong>: To check that the installation has completed successfully, run the Task Manager. If the MySQLd-nt.exe is on the Processes list - the database server is running. 
</div><br><br>
<h2><a name="nextSteps"></a>See Also</h2>
<ul>
<li><a href="../../trails/php.html">PHP Learning Trail</a></li>
<li><a href="../../docs/ide/mysql.html">Connecting to a MySQL Database</a></li>
<li><a href="http://www.mysql.com/why-mysql/java/" target="_blank">MySQL and Java - Resources</a> </li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/" target="_blank">MySQL 5.1 Reference Manual</a></li>
</ul>
</body>
</html>
