更改Mariadb中的DataDirectory



iam试图更改Mariadb中的数据目录,在更改INI文件中的数据dir路径后,然后尝试重新启动服务,它无法启动!!!显示一个警告:

> Error 1067: The process terminated unexpectedly

在MySQL中,数据DIR更改正常工作。但是我不知道为什么相同的mariadb不使用。

只有默认路径正在工作...

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

现在,要针对此情况 - 运行MariaDB服务的用户应该能够在Datadir目录中创建文件。默认情况下,Mariadb使用网络服务,而MySQL使用本地系统(最强大的Windows用户)。

此更改使Mariadb更加安全(如果服务被黑客入侵,则较小的影响),但是您不应该期望NetworkService像Localsystem一样具有读取作品的访问。

因此,要解决您的问题,您要么将网络服务的目录写入为目录,要么将服务用户更改为具有对目录的读写访问的用户。

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

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

不幸的是,这是MSI不可能做的,因此需要手动完成。

您需要

  • 停止服务
  • 将数据目录移至新位置(保留权限)
  • 创建从旧位置到新位置的符号链接
  • 给出服务帐户(网络服务)符号链接上的完整权限
  • 再次开始服务

这是一个例证如何通过脚本进行操作(需要使用完整的管理特权运行,例如在高架命令行上)。我使用robocopy复制文件,mklink来创建目录链接,icacls用于在链接上设置权限,而net开始/停止服务

set SERVICE=MySQL
set SRCDIR="C:Program FilesMariaDB 10.1data"
set DESTDIR="D:data"
net stop %SERVICE%
robocopy %SRCDIR% %DESTDIR% /MIR /SEC /MOVE
mklink /d %SRCDIR% %DESTDIR%
icacls %SRCDIR% /grant "NT AUTHORITYNetworkService":F
net start %SERVICE%

当前,即使您在MSI中选择了"删除数据",这也不会删除卸载上的新datadir。

相关内容

  • 没有找到相关文章

最新更新