Starting MySQL as a Windows Service

On Windows, the recommended way to run MySQL is to install it as a Windows service, whereby MySQL starts and stops automatically when Windows starts and stops. A MySQL server installed as a service can also be controlled from the command line using NET commands, or with the graphical Services utility. Generally, to install MySQL as a Windows service you should be logged in using an account that has administrator rights.

The Services utility (the Windows Service Control Manager) can be found in the Windows Control Panel (under Administrative Tools on Windows 2000, XP, Vista, and Server 2003). To avoid conflicts, it is advisable to close the Services utility while performing server installation or removal operations from the command line.

Installing the service

Before installing MySQL as a Windows service, you should first stop the current server if it is running by using the following command:

shell> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin"
          -u root shutdown

If the MySQL root user account has a password, you need to invoke mysqladmin with the -p option and supply the password when prompted.

This command invokes the MySQL administrative utility mysqladmin to connect to the server and tell it to shut down. The command connects as the MySQL root user, which is the default administrative account in the MySQL grant system. Note that users in the MySQL grant system are wholly independent from any login users under Windows.

Install the server as a service using this command:

shell> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld" --install

The service-installation command does not start the server. Instructions for that are given later in this section.

To make it easier to invoke MySQL programs, you can add the path name of the MySQL bin directory to your Windows system PATH environment variable:

  • On the Windows desktop, right-click the My Computer icon, and select Properties.

  • Next select the Advanced tab from the System Properties menu that appears, and click the Environment Variables button.

  • Under System Variables, select Path, and then click the Edit button. The Edit System Variable dialogue should appear.

  • Place your cursor at the end of the text appearing in the space marked Variable Value. (Use the End key to ensure that your cursor is positioned at the very end of the text in this space.) Then enter the complete path name of your MySQL bin directory (for example, C:\Program Files\MySQL\MySQL Server 5.0\bin), Note that there should be a semicolon separating this path from any values present in this field. Dismiss this dialogue, and each dialogue in turn, by clicking OK until all of the dialogues that were opened have been dismissed. You should now be able to invoke any MySQL executable program by typing its name at the DOS prompt from any directory on the system, without having to supply the path. This includes the servers, the mysql client, and all MySQL command-line utilities such as mysqladmin and mysqldump.

    You should not add the MySQL bin directory to your Windows PATH if you are running multiple MySQL servers on the same machine.


You must exercise great care when editing your system PATH by hand; accidental deletion or modification of any portion of the existing PATH value can leave you with a malfunctioning or even unusable system.

The following additional arguments can be used when installing the service:

  • You can specify a service name immediately following the --install option. The default service name is MySQL.

  • If a service name is given, it can be followed by a single option. By convention, this should be --defaults-file=file_name to specify the name of an option file from which the server should read options when it starts.

    The use of a single option other than --defaults-file is possible but discouraged. --defaults-file is more flexible because it enables you to specify multiple startup options for the server by placing them in the named option file. Also, in MySQL 5.0, use of an option different from --defaults-file is not supported until 5.0.3.

  • As of MySQL 5.0.1, you can also specify a --local-service option following the service name. This causes the server to run using the LocalService Windows account that has limited system privileges. This account is available only for Windows XP or newer. If both --defaults-file and --local-service are given following the service name, they can be in any order.

For a MySQL server that is installed as a Windows service, the following rules determine the service name and option files that the server uses:

  • If the service-installation command specifies no service name or the default service name (MySQL) following the --install option, the server uses the a service name of MySQL and reads options from the [mysqld] group in the standard option files.

  • If the service-installation command specifies a service name other than MySQL following the --install option, the server uses that service name. It reads options from the [mysqld] group and the group that has the same name as the service in the standard option files. This enables you to use the [mysqld] group for options that should be used by all MySQL services, and an option group with the service name for use by the server installed with that service name.

  • If the service-installation command specifies a --defaults-file option after the service name, the server reads options the same way as described in the previous item, except that it reads options only from the named file and ignores the standard option files.

As a more complex example, consider the following command:

shell> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf

Here, the default service name (MySQL) is given after the --install option. If no --defaults-file option had been given, this command would have the effect of causing the server to read the [mysqld] group from the standard option files. However, because the --defaults-file option is present, the server reads options from the [mysqld] option group, and only from the named file.


On Windows, if the server is started with the --defaults-file and --install options, --install must be first. Otherwise, mysqld.exe will attempt to start the MySQL server.

You can also specify options as Start parameters in the Windows Services utility before you start the MySQL service.

Starting the service

Once a MySQL server has been installed as a service, Windows starts the service automatically whenever Windows starts. The service also can be started immediately from the Services utility, or by using a NET START MySQL command. The NET command is not case sensitive.

When run as a service, mysqld has no access to a console window, so no messages can be seen there. If mysqld does not start, check the error log to see whether the server wrote any messages there to indicate the cause of the problem. The error log is located in the MySQL data directory (for example, C:\Program Files\MySQL\MySQL Server 5.0\data). It is the file with a suffix of .err.

When a MySQL server has been installed as a service, and the service is running, Windows stops the service automatically when Windows shuts down. The server also can be stopped manually by using the Services utility, the NET STOP MySQL command, or the mysqladmin shutdown command.

You also have the choice of installing the server as a manual service if you do not wish for the service to be started automatically during the boot process. To do this, use the --install-manual option rather than the --install option:

shell> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld" --install-manual
Removing the service

To remove a server that is installed as a service, first stop it if it is running by executing NET STOP MySQL. Then use the --remove option to remove it:

shell> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld" --remove

If mysqld is not running as a service, you can start it from the command line. For instructions, see Section, “Starting MySQL from the Windows Command Line”.

Please see Section 2.10.5, “Troubleshooting a MySQL Installation Under Windows”, if you encounter difficulties during installation.

Download this Manual
User Comments
  Posted by Paolo Lancelli on October 24, 2007
In case you receive "The system cannot find the file specified", remember that you have to install the service with the absolute path, in my case "C:\mysql\bin\mysqld --install". I added the \bin to the windows path, and I was installing the service only with "mysqld --install".
  Posted by Junaid Nazir on December 29, 2007
As mentioned earlier by another user, I fell into the trap of adding MySQL to start as a service via a command like

C:\> mysqld --install

The service is reported as being installed successfully, however, under the Services panel it shows the executable path as 'C:\mysqld' when in fact it is located under 'C:\mysql\bin'. I was working under the assumption that the mysql\bin directory had been added to the system PATH variable, but really you need to use absolute file paths when installing services. In my case, I used;

C:\> C:\mysql\bin\mysqld --install MySQL --defaults-file=C:\mysql\my.ini

This starts the service automatically with Windows bootup, and will load the my.ini configuration file which you have to place within the mysql directory. For the first time however, you will need to start the mysql service manually, since the earlier command makes mysql start and end with windows shutdowns and restarts.

net start mysql
  Posted by bob eff on June 8, 2008
If you have problems installing the service on Windows Vista, just run the normal install and add the service manually with the following command:

use the sc create command in a dos window to add the service:

sc create MySQL start= auto DisplayName= MySQL binPath= c:\program files\mysql\mysql server 5.1\bin\mysqld.exe

then if you need to alter any parameters, use the administrative tools/services utility
  Posted by Baruch Atta on January 14, 2010
Another "got-ya"... Make sure your my.ini file is in your MySQL directory, and the variables are pointing to the correct directories.
  Posted by Rich Wingerter on July 5, 2011
In order to overcome the "The system cannot find the file specified" message, I had to use the short 8dot3 names because my command program would not take the long names in quotes. Since I have mysql installed under EasyPHP on the D: drive, I had to use:

D:\progra~2\easyph~1.0\mysql\bin\mysqld --install

to get to mysqld in

D:\Program Files (x86)\EasyPHP-\mysql\bin

You can get the short names with the directory command:


  Posted by Dario Fumagalli on October 9, 2013
Beware, by reading these instructions it sounds like a name for the service is optional.
It's absolutely not, if you don't use a service name you get a cryptic:

Failed to install the service (Couldn't create service)

error message, that points to all but to this simple issue of not indicating a name.
  Posted by gur lavie on December 5, 2013
If you get the message "Can't install/remove the service"

Just make sure you run the CMD windows as Administrator
Sign Up Login You must be logged in to post a comment.