2.3.4 Microsoft Windows 上 MySQL 服务器安装故障排除
在第一次安装和运行 MySQL 时,您可能会遇到某些错误,阻止 MySQL 服务器启动。这部分帮助您诊断和解决这些错误。
在解决服务器问题时,您的第一个资源是错误日志。MySQL 服务器使用错误日志记录与服务器无法启动相关的信息。错误日志位于在您的数据目录中,该目录指定在您的my.ini
文件中。默认数据目录位置是C:\Program Files\MySQL\MySQL Server 8.4\data
,或C:\ProgramData\Mysql
在 Windows 7 和 Windows Server 2008 中。C:\ProgramData
目录默认隐藏。您需要更改文件夹选项以查看目录和内容。关于错误日志和理解内容,请见第7.4.2节,“错误日志”。
关于可能的错误信息,请同时查看 MySQL 服务启动时显示的控制台消息。使用SC START mysqld_service_name
或NET START mysqld_service_name
命令在命令行中输入,以查看 MySQL 服务器启动时的任何错误消息。见第2.3.3.8节,“Starting MySQL as a Windows Service”。
以下示例显示了在第一次安装 MySQL 时可能遇到的常见错误消息:
-
如果 MySQL 服务器无法找到
mysql
权限数据库或其他关键文件,它将显示这些消息:System error 1067 has occurred. Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
这些消息通常发生在 MySQL 基础或数据目录安装在默认位置以外的地方(
C:\Program Files\MySQL\MySQL Server 8.4
和C:\Program Files\MySQL\MySQL Server 8.4\data
,分别)。这种情况可能发生在 MySQL 升级并安装到新位置,但配置文件未更新以反映新位置。在此外,旧和新配置文件可能会冲突。确保在升级 MySQL 时删除或重命名任何旧配置文件。
如果您将 MySQL 安装到
C:\Program Files\MySQL\MySQL Server 8.4
以外的目录,确保 MySQL 服务器知道这个位置通过使用配置文件(my.ini
)文件。将my.ini
文件放置在 Windows 目录中,通常是C:\WINDOWS
。要确定其exact位置,可以从 WINDIR 环境变量的值中获取,使用以下命令从命令提示符中输入:C:\> echo %WINDIR%
您可以使用任何文本编辑器,例如Notepad,创建或修改选项文件。例如,如果MySQL安装在
E:\mysql
中,并且数据目录在D:\MySQLdata
中,您可以创建选项文件,并在[mysqld]
部分中指定basedir
和datadir
选项的值:[mysqld] # set basedir to your installation path basedir=E:/mysql # set datadir to the location of your data directory datadir=D:/MySQLdata
在选项文件中,Microsoft Windows路径名使用斜杠,而不是反斜杠。如果您使用反斜杠,需要将其双倍:
[mysqld] # set basedir to your installation path basedir=C:\\Program Files\\MySQL\\MySQL Server 8.4 # set datadir to the location of your data directory datadir=D:\\MySQLdata
关于选项文件值中的反斜杠使用规则,请参阅第6.2.2.2节,“使用选项文件”。
如果您在MySQL配置文件中更改了
datadir
值,必须在重新启动MySQL服务器前将现有MySQL数据目录的内容移动: -
如果您重新安装或升级MySQL,而不是首先停止并删除现有MySQL服务,然后使用MySQL Configurator配置MySQL,您可能会看到这个错误:
Error: Cannot create Windows service for MySql. Error: 0
这发生在配置向导尝试安装服务时,发现了具有相同名称的现有服务。
解决这个问题的一种方法是,在使用配置向导时选择一个名称不同于
mysql
的服务名。这使得新的服务可以正确安装,但留下了过时的服务。虽然这无害,但最好删除不再使用的旧服务。永久删除旧的
mysql
服务,可以在命令行中执行以下命令,以管理员身份运行:C:\> SC DELETE mysql [SC] DeleteService SUCCESS
如果
SC
实用程序不可用于您的Windows版本,可以从http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp下载delsrv
实用程序,并使用delsrv mysql
语法。