这一节会讨论在Windows上运行MySQL Server前,你应该检查的相应先决条件。这里同时会说到如何手工通过命令行模式来运行服务,或者作为一个Windows服务来自动启动运行。
3.3.1 Windows上MySQL服务启动的先决条件
由于MySQL的安装目录中包含了几个非常重要的子目录,因此我们应该在MySQL安装时,就明确了解MySQL安装在哪里。如果你在是通过MySQL Installer进行的安装,那么MySQL默认的安装目录为C:\Program Files\MySQL\MySQL Server 5.x。如果你使用noinstall归档压缩包进行安装,那么安装的路径就是你当时解压的位置。
在安装目录下,你会找到一个bin子目录,其包含了MySQL服务和客户端程序。而data子目录中则用于存放server对应的数据库。
在Windows上的MySQL安装,data目录会预先进行设定以备使用。例如,它会包含一个mysql目录以用于数据库mysql,这个数据库包含了授权表。data目录中也会包含一个test数据库目录以用于测试目的。在服务被安装后,你需要设置账户初始密码,而这些账号会被列在授权表中。
在MySQL的Windows分支版本相应bin目录中你可能会看到以下服务程序:
- mysqld作为Linux操作系统的标准服务(最新的Windows分支版本中也会使用mysqld),它包含了MyISAM和InnoDB存储引擎。
- mysqld-nt和mysqld一样,不过它包含了对基于NT系统如Windows NT, 2000, XP和2003的命令管道支持。
- mysqld-max和mysql-max-nt对应的mysql和mysql-nt一样,但包括了一些非max服务所有的其他一些存储引擎。
- mysqld-debug包含了对调试的支持。通常情况下你不需要选择此类MySQL server来用于生产环境,因为它会需要更多的运行时资源,并占用更多内存。
通常分支版本中仅包含mysqld或mysqld-nt服务程序。
当你在Windows上启动MySQL,MySQL会认为你的默认安装路径为C:\mysql,当然实际上你可以将它装在任何位置,但如果你真的这么做了,你就必须在server启动时告知它对应的位置在哪里。一种方法是你建立一个配置文件,并在文件中定义好你的路径位置。在使用MySQL Installer进行安装时,过程中会启用配置精灵,通过以下步骤引导你进行基本或完整组件安装的设置并建立配置文件:
- 配置精灵会首先使用安装目录C:\Program Files\MySQL\MySQL Server 5.x并在其中建立一个名为ini的配置文件。配置文件包含了一个[mysqld]组,组中包括有一个basedir参数用于设置安装的目录:
[mysqld] basedir=”C:/Program Files/MySQL/MySQL Server 5.x”
请注意:配置文件中设置的Windows路径中使用斜杠”/”,而不是反斜杠”\”。
- 配置精灵会在安装server时将其注册为一个Window服务。其在进行注册时,其命令中会包含一个
--defaults-file
参数项来指定ini的文件位置:mysqld --install MySQL --defaults-file="C:\Program Files\MySQL\MySQL Server 5.x\my.ini"
(其中–install参数后的MySQL为服务名,你可根据情况自行设定,下图中注册的服务名为MySQL56)
这样当服务启动后,MySQL Server会知道在哪里可以找配置文件,并从配置文件中获取安装目录的位置。
如果你使用配置精灵来安装MySQL,但又希望MySQL服务使用其他服务程序(非mysqld,如mysqld-max)来启动运行,那么你需要移除原有Windows服务,并使用其他服务名来对应进行服务注册。
3.3.2 在Windows上手动运行MySQL Server
在Windows命令行窗口中手工使用命令来运行MySQL,你需要通过命令行转至MySQL安装目录的bin子目录下,并调用服务命令:
C:\>cd C:\Program Files\MySQL\MySQL Server 5.x\bin C:\Program Files\MySQL\MySQL Server 5.x\bin>mysqld
** 你可以将bin目录路径整个添加到Windows系统环境变量path中,这样就可以直接调用命令而不必频繁进行跳转目录操作。
默认情况下,Windows会将报错信息写入data子目录下的host_name.err日志文件中(host_name为MySQL服务主机名)。如果MySQL Server未能正常启动,你需要检查报错日志文件已分析报错原因。当然,你也可以通过使用以下命令在MySQL启动时在Windows命令行窗口中显示诊断输出进行查看分析:
C:\> mysqld --console
其他一些server参数也可以在命令中或在配置文件中进行设置。
当你在命令行窗口中调用MySQL服务程序后,命令行将不会再显示任何提示直至服务退出。关闭窗口会导致服务被中止,因此,如果你希望在命令窗口中运行其他MySQL程序,你需要在server运行时打开一个新的命令窗口,在新窗口中执行命令操作。
如果需要关闭MySQL服务,可以在命令行中使用mysqladmin命令实现:
C:\> mysqladmin shutdown
你也可以通过Windows任务管理器来关闭MySQL,不过你应该尽量避免这么操作;因为任务管理器会强行中止MySQL server的运行,这将导致server没有机会进行干净地关闭。结果可能导致数据讹误并需要进行表修复。
3.3.3 以Windows服务的方式运行MySQL
之前我们讲述了如何手工运行MySQL server。其他方法,则可以在安装时将MySQL server注册为一个Window服务,并设置为【自动】。这样,MySQL server就会在Windows启动或关闭时进行自启动及自动关闭。
如果你在安装MySQL时使用了MySQL Installer,你可能已经使用了配置精灵建立起了MySQL的Windows服务并启动了服务。否则,你将需要自己来进行服务注册,为了完成注册,你需要转到MySQL安装路径的bin子目录下。之后在调用mysqld命令时使用 –install参数:
C:\> mysqld --install
** 这里命令使用时,对应的bin目录路径已经存入了path环境变量中了。
你也可以将所需的启动参数写入配置文件中,并在注册服务中告知server在启动时读取此配置文件。如使用C:\server-opts.ini文件作为服务配置文件:
C:\> mysql --install MySQL --defaults-file=C:\server-opts.ini
通过--defaults-file
设置,MySQL服务在启动时读取对应文件中的[mysqld]配置组,由于设置了--defaults-file
因此,它会忽略默认位置的配置文件中的设置。
命令中 –install设置并不会真正启动server。它仅仅是告诉Windows将其作为一个服务来进行处理,并当Windows启动或关闭时,同时自动启动mysqld或关闭它。你也可以通过以下命令来手动启动或关闭服务,通过此操作来开启MySQL或关闭它:
C:\> net start MySQL C:\> net stop MySQL
这里的MySQL为注册的Windows服务名。
可以使用一个图形界面来控制此MySQL服务,你可以使用Windows服务管理器。
列出所有服务,找到对应MySQL的服务,进行启动或关闭操作。
你也可以使用mysqladmin shutdown命令来进行手工关闭。
如果服务不能正常启动,检查data子目录中的报错日志或直接使用mysqld启动,同时带上–console参数,这样报错信息就会直接出现在命令行窗口中了。
如果需要移除MySQL服务,请先确保MySQL已经被关闭,然后使用以下命令:
C:\> mysqld --remove
以上命令默认MySQL服务名为MySQL。如果Windows对应服务名不同,则你可以使用以下命令显示提供服务名:
C:\> mysqld --install service_name C:\> mysqld --install service_name --defaults-file=C:\file_name C:\> net start service_name C:\> mysqld --remove service_name C:\> net stop service_name
如果你不是使用服务名MySQL来进行安装,且在服务注册时也未指定--defaults-file
参数项,那么MySQL服务将会查找默认位置的标准配置文件, 除了读取其中[mysqld]组的设置之外,还会读取[service_name]组中的参数设置。
除了以上这些方法外来启动关闭MySQL之外,你也可以使用MySQL Workbench等集成工具来实现此操作。如果你在使用MySQL Installer安装MySQL的时候同时安装有MySQL Notifier,你也可以使用这个小工具来进行MySQL的启动和关闭控制:
Comment