在 Windows 上,建议将 MySQL 作为 Windows 服务安装,这样 MySQL 就可以在 Windows 启动和停止时自动启动和停止。安装为服务的 MySQL 服务器也可以使用 NET 命令或图形 Services 实用程序从命令行控制。
一般来说,要将 MySQL 安装为 Windows 服务,您应该使用具有管理员权限的帐户登录。
安装服务
在将 MySQL 安装为 Windows 服务之前,您应该先使用以下命令停止当前正在运行的服务器
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqladmin"
-u root shutdown
如果 MySQL root
用户帐户有密码,则需要使用 -p
选项调用 mysqladmin,并在提示时提供密码。
此命令调用 MySQL 管理实用程序 mysqladmin 连接到服务器并告诉它关闭。该命令以 MySQL root
用户身份连接,该用户是 MySQL 授权系统中的默认管理员帐户。
MySQL 授权系统中的用户完全独立于 Windows 下的任何操作系统用户。
使用此命令将服务器安装为服务
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --install
服务安装命令不会启动服务器。本节稍后将介绍相关说明。
为了更方便地调用 MySQL 程序,您可以将 MySQL bin
目录的路径名添加到 Windows 系统 PATH
环境变量中
在 Windows 桌面上,右键单击 我的电脑 图标,然后选择 。
接下来,从出现的
菜单中选择 选项卡,然后单击 按钮。在 系统变量 下,选择 ,然后单击 按钮。此时应该会显示 对话框。
将光标放在标记为 变量值 的空间中出现的文本末尾。(使用 End 键确保光标位于此空间中文本的末尾。)然后输入 MySQL
bin
目录的完整路径名(例如,C:\Program Files\MySQL\MySQL Server 8.4\bin
),并且应该用分号将此路径与该字段中存在的任何值分隔开。通过单击 关闭此对话框和每个对话框,直到所有打开的对话框都被关闭。现在,您可以从系统上的任何目录在 DOS 提示符下键入任何 MySQL 可执行程序的名称来调用它,而无需提供路径。这包括服务器、mysql 客户端,以及所有 MySQL 命令行实用程序,如 mysqladmin 和 mysqldump。如果您在同一台机器上运行多个 MySQL 服务器,则不应将 MySQL
bin
目录添加到 WindowsPATH
中。
手动编辑系统 PATH
时必须非常小心;意外删除或修改现有 PATH
值的任何部分都可能导致系统故障甚至无法使用。
安装服务时可以使用以下其他参数
您可以在
--install
选项后立即指定服务名称。默认服务名称为MySQL
。如果给出了服务名称,则可以在其后面跟着一个选项。按照惯例,这应该是
--defaults-file=
,用于指定服务器启动时应从中读取选项的选项文件的名称。file_name
可以使用除了
--defaults-file
之外的单个选项,但并不建议这样做。--defaults-file
更加灵活,因为它允许您通过将多个启动选项放置在命名的选项文件中为服务器指定多个启动选项。您还可以指定一个
--local-service
选项,该选项位于服务名称之后。这会导致服务器使用具有有限系统权限的LocalService
Windows 帐户运行。如果--defaults-file
和--local-service
都位于服务名称之后,则它们的顺序可以是任意的。
对于安装为 Windows 服务的 MySQL 服务器,以下规则决定服务器使用的服务名称和选项文件
如果服务安装命令在
--install
选项后没有指定服务名称或默认服务名称 (MySQL
),则服务器使用MySQL
服务名称并从标准选项文件中的[mysqld]
组读取选项。如果服务安装命令在
--install
选项后指定的服务名称不是MySQL
,则服务器将使用该服务名称。它从标准选项文件中的[mysqld]
组以及与服务名称相同的组读取选项。这使您可以使用[mysqld]
组用于所有 MySQL 服务的选项,以及使用服务名称的选项组用于使用该服务名称安装的服务器。如果服务安装命令在服务名称后指定了
--defaults-file
选项,则服务器读取选项的方式与上一项中描述的相同,只是它只从指定的选项文件读取选项,并忽略标准选项文件。
作为一个更复杂的例子,考虑以下命令
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld"
--install MySQL --defaults-file=C:\my-opts.cnf
在这里,默认服务名称 (MySQL
) 在 --install
选项之后给出。如果没有给出 --defaults-file
选项,此命令将导致服务器从标准选项文件中读取 [mysqld]
组。但是,由于 --defaults-file
选项存在,服务器只从指定文件中读取 [mysqld]
选项组中的选项。
在 Windows 上,如果服务器使用 --defaults-file
和 --install
选项启动,则 --install
必须放在前面。否则,mysqld.exe
将尝试启动 MySQL 服务器。
您也可以在启动 MySQL 服务之前,在 Windows 服务 实用程序中指定选项作为启动参数。
最后,在尝试启动 MySQL 服务之前,请确保用于运行服务的操作系统用户的用户变量 %TEMP%
和 %TMP%
(以及 %TMPDIR%
,如果曾经设置过)指向用户有写入权限的文件夹。运行 MySQL 服务的默认用户是 LocalSystem
,其 %TEMP%
和 %TMP%
的默认值为 C:\Windows\Temp
,这是一个 LocalSystem
默认具有写入权限的目录。但是,如果对该默认设置进行了任何更改(例如,对运行服务的用户或提到的用户变量进行更改,或者使用 --tmpdir
选项将临时目录放在其他位置),MySQL 服务可能无法运行,因为没有授予适当用户对临时目录的写入权限。
启动服务
在将 MySQL 服务器实例安装为服务后,Windows 将在每次 Windows 启动时自动启动该服务。该服务也可以从 服务 实用程序中立即启动,或使用 sc start mysqld_service_name
或 NET START mysqld_service_name
命令启动。 SC 和 NET 命令不区分大小写。
当以服务方式运行时,mysqld 无法访问控制台窗口,因此无法看到任何消息。如果 mysqld 无法启动,请检查错误日志以查看服务器是否在那里写入了任何消息来指示问题的起因。错误日志位于 MySQL 数据目录中(例如,C:\Program Files\MySQL\MySQL Server 8.4\data
)。它是后缀为 .err
的文件。
当 MySQL 服务器安装为服务并且服务正在运行时,Windows 在 Windows 关闭时自动停止服务。该服务器也可以使用 服务
实用程序、sc stop mysqld_service_name
命令、NET STOP mysqld_service_name
命令或 mysqladmin shutdown 命令手动停止。
您也可以选择将服务器安装为手动服务,如果您不希望在引导过程中自动启动服务。为此,请使用 --install-manual
选项而不是 --install
选项
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --install-manual
删除服务
要删除安装为服务的服务器,请首先在运行时执行 SC STOP mysqld_service_name
或 NET STOP mysqld_service_name
来停止它。然后使用 SC DELETE mysqld_service_name
来删除它
C:\> SC DELETE mysql
或者,使用 mysqld --remove
选项来删除服务。
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --remove
如果 mysqld 未作为服务运行,您可以从命令行启动它。有关说明,请参见 第 2.3.3.6 节,“从 Windows 命令行启动 MySQL”。
如果您在安装过程中遇到困难,请参见 第 2.3.4 节,“排查 Microsoft Windows MySQL 服务器安装问题”。
有关停止或删除 Windows 服务的更多信息,请参见 第 7.8.2.2 节,“将多个 MySQL 实例启动为 Windows 服务”。