5.5.8 Starting MySQL as a Windows Service

On Windows, the recommended way to run MySQL is to install it as
a Windows service, so that 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.

Note

MySQL Notifier can also
be used to monitor the status of the MySQL service.

The Services utility (the Windows
Service Control Manager) can be found in the
Windows Control Panel. 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:

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

Users in the MySQL grant system are wholly independent from
any operating system users under Windows.

Install the server as a service using this command:

C:\> "C:\Program Files\MySQL\MySQL Server 5.7\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.7\bin), and 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.

Warning

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.

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

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.

Note

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.

Finally, before trying to start the MySQL service, make sure the
user variables %TEMP% and
%TMP% (and also %TMPDIR%,
if it has ever been set) for the operating system user who is to
run the service are pointing to a folder to which the user has
write access. The default user for running the MySQL service is
LocalSystem, and the default value for its
%TEMP% and %TMP% is
C:\Windows\Temp, a directory
LocalSystem has write access to by default.
However, if there are any changes to that default setup (for
example, changes to the user who runs the service or to the
mentioned user variables, or the
--tmpdir option has been used to
put the temporary directory somewhere else), the MySQL service
might fail to run because write access to the temporary
directory has not been granted to the proper user.

Starting the service

After a MySQL server instance 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 an sc
start mysqld_service_name
or NET START
mysqld_service_name
command. SC and NET
commands are 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.7\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
using the Services utility, the sc
stop mysqld_service_name
command, the NET START
mysqld_service_name
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:

Removing the service

To remove a server that is installed as a service, first stop it
if it is running by executing SC STOP
mysqld_service_name or
NET STOP
mysqld_service_name. Then
use SC DELETE
mysqld_service_name to
remove it:

User comments in this section are, as the name implies, provided by MySQL users.
The MySQL documentation team is not responsible for, nor do they endorse, any of
the information provided here.

Posted by
Artur Södler
on
February 29, 2016

In (at least) version 5.7.11, the service *is* registered with the absolute path, no matter how mysqld.exe had been found in order to "--install" itself.(══► Some of the above posts are obsolete.)

Posted by
David Bullet
on
September 2, 2016

Make sure you run "mysqld --initialize", before you attempt to start the service via "net start mysql", otherwise you'll get an error in your .\data\<hostname>.err log complaining about a missing plugin table...