更改mariadb中的datadirectory

时间:2012-10-30 10:25:37

标签: mariadb datadirectory

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

> Error 1067: The process terminated unexpectedly

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

只有默认路径正在运行...

2 个答案:

答案 0 :(得分:2)

我应该提到精彩的系统内部工具(例如procmon),这不仅在这种情况下而且在许多其他情况下都非常有用。 Windows错误日志是第二个非常有用的工具,如果您要查看它。知道工具

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

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

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

答案 1 :(得分: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中选择“删除数据”,这也不会在卸载时删除新的datadir。