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

时间:2015-11-17 08:38:57

标签: mysql

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

mh

我尝试重新安装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 时,没有任何反应。

17 个答案:

答案 0 :(得分:61)

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

答案 1 :(得分:55)

由于您使用的是Windows安装程序,所以一切都已设置为运行MySQL 5.7作为Windows服务,在大多数情况下这是一个很好的选择。

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

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

答案 2 :(得分:19)

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

mysqld --datadir=D:/MySQLData/Data

Here's the documentation for mysqld command-line arguments.

答案 3 :(得分:11)

我为新安装做了什么(Windows 10):

  1. 以管理员模式启动cmd(通过点击Windows键,输入cmd,右键单击它并选择"以管理员身份运行"

  2. 以管理员身份运行
  3. 转换为" MySQL服务器X.Y"目录(对我来说,完整路径是C:\ Program Files \ MySQL \ MySQL Server 5.7")

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

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

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

  7. 完成后,启动服务,结果很好。

答案 4 :(得分:7)

  1. 检查导演是否存在。
  2. 如果存在,请确保mysql具有访问权限(读/写)。将MySQL作为系统进程运行可能是一个好主意,但不是强制性的。
  3. 如果这个stil不工作,请尝试使用以下带有双斜杠的表示法:C:\ WebSerer \ MySQL \ data或C:/ WebServer / MySQL / data

答案 5 :(得分:4)

首次运行

mysqld -u root --initialize-insecure 

它将创建一个以root身份作为用户且没有密码的数据文件夹。然后运行

mysqld.exe -u root --console

答案 6 :(得分:2)

如果您遇到此问题并且也找不到 MySQL 服务,只需从“开始”菜单启动“MySQL 安装程序”(或下载它),然后在 MySQL 服务器上选择“重新配置”。按照步骤设置 root 用户密码,然后服务将自动创建和启动(并设置为启动时自动启动)。

答案 7 :(得分:1)

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

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

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

答案 8 :(得分:1)

在mysql 8.0.13 zip包中初始化。

  1. 验证数据文件夹为空。
  2. 在mysql bin路径下运行

    mysqld.exe --initialize-insecure

  3. 添加到my.ini本机mysql

    [mysqld]

    default_authentication_plugin=mysql_native_password

答案 9 :(得分:0)

就我而言,我是 MySQL5.6,在 Win10 pro 中通过 workbrench 安装工具安装。 有两个配置文件需要修改, 只编辑这一行:datadir=E:\MySQL

  1. 使用 services.msc 停止 MySQL56 服务
  2. 在 C:\ProgramData\MySQL\MySQL Server 5.6 下编辑 my.ini
  3. 在 C:\Program Files\MySQL\MySQL Server 5.6 下编辑 my-default.ini
  4. 将 C:\ProgramData\MySQL\MySQL Server 5.6*.* 复制到 E:\MySQL
  5. 使用 services.msc 启动 MySQL56 服务

测试:创建数据库'testdb'; 如果在 E:\MySQL 中找到 testdb 文件夹则成功。

答案 10 :(得分:0)

我不知道这是不是你的问题,但试试这个...

对我来说,在“ProgramData\MySQL\MySQL Server [version]”下创建的 my.ini 版本没有被读取。我不得不将它移动到“Program Files\MySQL\MySQL Server [version]”。

实时搜索。

答案 11 :(得分:0)

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

我如何发现:

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

错误:

mysqld:无法读取'C:\ ProgramData \ MySQL \ MySQL Server 8.0 \ Uploads \'的目录(操作系统errno 2-没有此类文件或目录)

解决方案:

一旦我手动创建了Uploads文件夹,服务器就成功启动了。

答案 12 :(得分:0)

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

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

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

  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已启动。

希望它对某人有帮助。

答案 13 :(得分:0)

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

我通过

解决了
  1. 从“ C:\ ProgramData \ MySQL \ MySQL Server X.Y \ my.ini”复制my.ini
  2. 将其粘贴到“ C:\ Program Files \ MySQL \ MySQL Server X.Y \ 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". 

答案 14 :(得分:0)

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

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

  2. 在mysql bin路径下运行: mysqld.exe-初始化不安全

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

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

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

找到与您的mysql版本匹配的模板

答案 15 :(得分:0)

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

打开PowerShell并运行以下命令:

Get-Service *sql*

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

Start-Service -Name service-name

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

答案 16 :(得分:0)

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

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