第2章:安装MySQL / 2.3. 在Windows上安装MySQL / 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除

首次安装、运行MySQL时,你可能会遇到一些错误,使MySQL服务器不能启动。本节的目的是帮助你诊断并纠正这些错误。

解决服务器问题时你的第一资料是错误日志。MySQL服务器使用错误日志来记录服务器不能启动的信息。错误日志位于my.ini文件指定的数据目录中。默认数据目录位于C:\Program Files\MySQL\MySQL Server 5.1\dat。请参见5.11.1节,“错误日志”

另一个错误相关信息源是MySQL服务启动时控制台上显示的消息。将mysqld安装为服务后,从命令行通过NET START mysql命令来查看MySQL服务启动相关的错误消息。请参见2.3.12节,“以Windows服务方式启动MySQL”

下面距离说明了首次安装并启动MySQL服务时会遇到的最常见的错误消息:

·                System error 1067 has occurred.
·                Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist

·         MySQL服务器找不到MySQL权限数据库或关键文件时会出现这些消息。当MySQL基或数据目录没有安装在默认位置(C\mysqlC:\Program Files\MySQL\MySQL Server 5.1\data),而是安装到其它位置时通常会遇到该问题。

发生该问题的一种情况是对MySQL进行升级或安装到了新位置,但是没有对配置文件进行更新以对应新的安装位置。此外还可能是新旧配置文件冲突,当升级MySQL时,一定要删除或重新命名旧的配置文件。

如果你没有将MySQL安装到C:\Program Files\MySQL\MySQL Server 5.1目录下,而是安装到了其它目录下,你需要通过使用配置(my.ini)文件让MySQL服务器知道安装目录。my.ini文件应位于Windows目录下,典型为C\WINNTC\WINDOWS。可以在命令提示符下输入下面的命令从WINDIR环境变量值中确定确切位置:

C\> echo %WINDIR%

可以通过文本编辑器(例如记事本)来创建并修改选项文件。例如,如果MySQL安装在E\mysql数据目录在D:\MySQLdata,你可以创建选项文件并设置[mysqld]来指定basedirdatadir参数的值:

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata

请注意应使用()斜线而不是反斜线在选项文件中指定Windows路径名。如果使用反斜线,则必须使用双斜线:

[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
# set datadir to the location of your data directory
datadir=D:\\MySQLdata

如果在MySQL配置文件中更改datadir值,在重新启动MySQL服务器之前,必须移动已有MySQL数据目录中的内容。

参见2.3.8节,“创建选项文件”

·                Error: Cannot create Windows service for MySql. Error: 0

·         当你没有事先停止并卸载已有MySQL服务,并且使用MySQL Configuration Wizard(配置向导)重新安装或升级MySQL时,会遇到该问题。发生的原因是,当配置向导试图安装服务时,它发现已经有一个同名的服务。

解决该问题的一个方案是使用配置向导时选择mysql之外的其它服务名。这样可以正确安装新服务,但保留了原来的服务。但是这样不好,最好是卸掉不再使用的旧服务。

要想永远卸掉旧的MySQL服务,通过管理权限用户在命令行执行下面的命令:

C:\>sc delete mysql
[SC] DeleteService SUCCESS

如果Windows版本中没有sc工具,可以从 http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 下载delsrv工具并使用delsrvMySQL语法。