1

我正在尝试更改mariadb中的数据目录,在更改ini文件中的数据目录路径后,尝试重新启动服务,它无法启动!显示如下警告:

> Error 1067: The process terminated unexpectedly

在 MySQL 中,数据目录更改工作正常。但我不知道为什么同样不能使用mariadb.

只有默认路径有效...

4

2 回答 2

2

我应该提到出色的系统内部工具(例如 procmon),它不仅在这种情况下而且在许多其他情况下都非常有用。Windows 错误日志是第二个非常有用的工具,如果你想看看的话。了解你的工具

现在针对这种情况提出具体建议 - 运行 MariaDB 服务的用户应该能够在 datadir 目录中创建文件。默认情况下,MariaDB 使用网络服务,而 MySQL 使用本地系统(最强大的 Windows 用户)。

此更改使 MariaDB 更安全(如果服务被黑客入侵,影响更小),但是您不应期望 NetworkService 具有对任何目录的读写访问权限,例如 LocalSystem 。

因此,要解决您的问题,您可以使目录对 NetworkService 可写,或者将服务用户更改为对该目录具有读写访问权限的用户。

于 2012-11-12T15:12:51.583 回答
0

最近有人问这个,我想出了另一个答案,涉及符号链接。我觉得这个解决方案可能是最简单的,在 my.ini 或服务配置中不需要搞砸。

如何在安装后移动数据目录(例如磁盘 C:\ 已满)。

不幸的是,这在 MSI 上是不可能的,所以需要手动完成。

你需要

  • 停止服务
  • 将数据目录移动到新位置(保留权限)
  • 创建从旧位置到新位置的符号链接
  • 授予服务帐户 (NetworkService) 对符号链接的完全权限
  • 再次启动服务

这是一个说明如何从脚本执行此操作(需要以完全管理员权限运行,例如在提升的命令行上)。我robocopy用来复制文件、mklink创建目录链接、icacls设置链接权限以及net启动/停止服务

set SERVICE=MySQL
set SRCDIR="C:\Program Files\MariaDB 10.1\data"
set DESTDIR="D:\data"

net stop %SERVICE%
robocopy %SRCDIR% %DESTDIR% /MIR /SEC /MOVE
mklink /d %SRCDIR% %DESTDIR%
icacls %SRCDIR% /grant "NT AUTHORITY\NetworkService":F
net start %SERVICE%

目前,即使您在 MSI 中选择了“删除数据”,这也不会在卸载时删除新的数据目录。

于 2016-11-03T20:17:42.703 回答