mysqld:无法将dir更改为data。服务器无法启动


78

我使用安装程序安装了MySQL服务器,然后启动了该服务器。重新启动后,我尝试再次启动它并得到错误:

D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld -u root -p
mysqld: Can't change dir to 'D:\Program Files\MySQL\MySQL Server 5.7\data\'     (Errcode: 2 - No such file or directory)
2015-11-17T08:30:18.822962Z 0 [Warning] TIMESTAMP with implicit DEFAULT     value is deprecated. Please use --explicit_defaults_for_timestamp server option     (see documentation for more details).
2015-11-17T08:30:18.822962Z 0 [Warning] Insecure configuration for --secure-    file    -priv: Current value does not restrict location of generated files.     Consider setting it to a valid, non-empty path.
2015-11-17T08:30:18.822962Z 0 [Note] mysqld (mysqld 5.7.9) starting as     process 1108 ...
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [ERROR] failed to set datadir to D:\Program     Files\MySQL\MySQL Server 5.7\data\
2015-11-17T08:30:18.838586Z 0 [ERROR] Aborting


2015-11-17T08:30:18.838586Z 0 [Note] Binlog end
2015-11-17T08:30:18.838586Z 0 [Note] mysqld: Shutdown complete

我试图重新安装MySQL。
更新:
当我mysqld -u root -p以管理员身份运行时,什么都没有发生。


2
确保文件夹存在并且mysql用户具有权限
georgecj11

我也一样 我相信问题是1.非标准安装目录(非C:\ ..)和\或2.非标准数据目录和\或3. MySQL未作为服务安装。我用nulliusinverba的答案解决了它,尽管看起来实例(进程)的行为仍然很奇怪。
里瓦

如果要在Windows上安装,我强烈建议使用.msi安装程序。比手动安装容易得多
Kolob Canyon

@KolobCanyon不幸的是,您不能使用msi安装程序在主要版本之间进行升级
Ian

Answers:


77

由于您使用Windows安装程序,因此一切都已设置为可将MySQL 5.7作为Windows服务运行,这在大多数情况下是一个不错的选择。

而不是mysqld.exe从命令行运行,

  1. Win + R
  2. services.msc
  3. 右键点击 MySQL57
  4. 启动服务。

10
除了您在安装过程中指定时(如我所做的那样)之外,您不想安装MySQL服务器即服务。比根本没有创建服务,您将在徒劳的服务中搜索它。
里瓦

2
如果您将一直使用MySQL,则可以要求Windows自动将其加载。按照@AaronDanielson的说明,右键单击MySQL57服务,打开“属性”,然后将“初始化类型”从“手动”更改为“自动”。
雷纳托·拜罗

如果您在Windows中以受限用户的身份工作,请单击Windows的“开始”符号,键入services.msc,然后右键单击它并以admin身份启动。
ROBI万克诺比

1
首先运行“ mysqld -u root --initialize-insecure”。它将以root用户身份创建数据文件夹,而无需密码和必要的文件。然后运行“ mysqld.exe --console”。
Nizar

这样,它不会处理初始化文件,并且不会重置密码。它开始了,但我仍然无法进入
。– RichMeister

79

我遇到了同样的问题。就我而言,我的..\data目录中没有 目录,C:\mysql\因此我只mysqld --initializec:\mysql\bin\目录执行了命令,就在目录中获得了数据目录c:\mysql\data。之后,我可以使用mysqld.exe --console命令来测试服务器启动。


作为记录,正式文档中
mcont

1
另外,不要忘记启动cmdas Administrator(即右键单击cmd->以管理员
身份

1
尝试重置
Windows10

25

就我而言,我已经将数据目录安装到了其他位置。因此,数据目录确实不在默认位置。因此,当我mysqld从命令提示符处运行命令时,必须手动指定数据目录:

mysqld --datadir=D:/MySQLData/Data

这是mysqld命令行参数的文档。


感谢您的回答。它解决了我的问题。mysql将数据目录安装在ProgramData目录中,而mysqld在程序文件中寻找它。有了您的答案,我只指定了--datadir和bam,它起作用了!
迈克尔·艾克

当我将MariaDB可移植物移动到另一个位置时,此方法起作用。谢谢你的回答!
本杰明·魏斯

11

我为新安装所做的操作(Windows 10):

  1. 在管理员模式下启动cmd(通过按Windows键,键入cmd,右键单击它并选择“以管理员身份运行”,以管理员身份运行)

  2. 转到“ MySQL Server XY”目录(对我而言,完整路径为C:\ Program Files \ MySQL \ MySQL Server 5.7“)

  3. 使用记事本创建一个my.ini,它的mysqld部分指向您的数据目录

    [mysqld]
    datadir="X:\Your Directory Path and Name"
    
  4. 创建了上面my.ini中标识的目录。

  5. 更改为服务器目录下的bin目录并执行: mysqld --initialize

  6. 完成后,启动服务,一切正常。


对我有用,但是当我第一次尝试以root用户身份登录时,它说访问被拒绝。我以为默认的root密码是no password。
AjaxLeung

10

首轮

mysqld -u root --initialize-insecure 

它将以root用户身份创建数据文件夹,而无需密码。然后跑

mysqld.exe -u root --console

我运行了您的第一条指令,并创建了我的文件夹“ data”,之后像一个文档:dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/…:我运行了此指令:C:\> mysqld- -defaults-file =“ C:\\ ProgramData \\ MySQL \\ MySQL Server 5.7 \\ my.ini” --init-file = C:\\ mysql-init.txt
vljc2004年

7
  1. 检查导演是否存在。
  2. 如果存在,请确保mysql对它具有访问权限(读/写)。将MySQL作为系统进程运行可能是一个好主意,但不是强制性的。

如果仍然无法正常工作,请尝试使用带有双斜杠的以下符号:C:\ WebSerer \ MySQL \ data或C:/ WebServer / MySQL / data


3

在mysql 8.0.13中对zip包进行初始化。

  1. 验证数据文件夹为空。

  2. 在mysql bin路径下运行

    mysqld.exe --initialize-insecure

  3. 添加到my.ini本机mysql

    [mysqld]

    default_authentication_plugin=mysql_native_password


2

当我遇到同样的错误时,我注意到“ C:\ Program Files \ MySQL \ MySQL Server XY \”中的MySQL配置文件已更改为my-default.ini。

我解决了

  1. 从“ C:\ ProgramData \ MySQL \ MySQL Server XY \ my.ini”复制my.ini
  2. 粘贴到“ C:\ Program Files \ MySQL \ MySQL Server XY \ my.ini”中
  3. 从services.msc重新启动MySQL Server

在.ini文件中,其内容为:

# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 

1

检查您的真实my.ini文件位置并--defaults-file="location"使用此命令进行设置

mysql --defaults-file="C:\MYSQL\my.ini" -u root -p

此解决方案永久用于您的cmd屏幕。


1

删除“ {path-to-mysql} \ data”目录中的所有文件,然后运行:

mysqld --initialize-insecure --basedir={path-to-mysql}\mysql --datadir={path-to-mysql}\data --console

1

mariofertc为我彻底解决了这个问题,这是他的步骤:

  1. 确认mysql的数据目录为空(但是,在删除它之前,请保存err文件作为记录)。

  2. 在mysql bin路径下运行:mysqld.exe --initialize-insecure

  3. 将以下内容添加到my.ini(mysql的配置文件)中:[mysqld] default_authentication_plugin = mysql_native_password

然后检查服务(通过任务管理器)以确保MySql正在运行,如果没有运行-右键单击MySql并启动它。

我还要注意,如果您在mysql bin中没有mysql配置文件,并且无法通过Windows搜索找到它,则需要在C:\ Program Data \ Mysql \中查找它。可能是除my.ini以外的其他名称,例如模板,如Heesu在这里提到的:找不到my.ini(mysql 5.7) 只需通过命令mysql --version找到与mysql版本匹配的模板


0

如果您使用Windows安装程序安装了MySQL Server并作为Window的服务,则可以使用PowerShell启动MySQL Server,并体验不退出命令行的便利。

打开PowerShell并运行以下命令:

Get-Service *sql*

将检索并显示MySQL服务的列表。选择所需的名称,然后运行以下命令,同时将service-name替换为实际的服务名称:

Start-Service -Name service-name

做完了 您可以通过Get-Service *sql*再次运行命令并检查服务状态来检查服务是否正在运行。


0

此解决方案使用Windows mysql安装程序

我已经尝试过这里和其他相关文章提到的所有其他方式,但是它不能解决我的问题,该服务只是无法启动,但是下面的mysql-installer方法可以做到。

如果您仍然有安装程序或至少要记住版本,请按照以下步骤操作:

  1. 启动Windows mysql安装程序。对我来说是“ mysql-installer-community-8.0.20.0”
  2. 然后删除/卸载SQL Server并删除所有配置
  3. 从“ C:\ Program Files \ MySQL \ MySQL Server 8.0”中手动删除SQL Server文件夹。
  4. 再次启动mysql安装程序,然后再次安装SQL Server

您可以从窗口的服务中检查MySqL Server已启动。

希望它能帮助某人。


0

检查服务器所需的丢失文件夹,在我的情况下,它是programData中的UPLOADS文件夹,该文件夹已由我之前使用的空文件夹清洁程序实用程序删除。

我如何发现:

运行服务器配置文件my.ini(在我的情况下是在programData中)作为mysqld的默认文件参数(不要忘记使用--console选项在屏幕上查看错误日志)'mysqld --defaults-file =“ C:\ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini” --console'

错误:

mysqld:无法读取“ C:\ ProgramData \ MySQL \ MySQL Server 8.0 \ Uploads \”的目录(OS errno 2-无此类文件或目录)

解:

手动创建Uploads文件夹后,服务器成功启动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.