首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mariadb中更改数据目录

问在mariadb中更改数据目录
EN

Stack Overflow用户
提问于 2012-10-30 18:25:37
回答 2查看 3.7K关注 0票数 1

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

代码语言:javascript
复制
> Error 1067: The process terminated unexpectedly

在MySQL中,数据目录的更改可以完美地工作。但我不知道为什么同样的方法不适用于mariadb。

只有默认路径有效...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-12 23:12:52

我应该提到一些很棒的系统内部工具(例如procmon),它们不仅在这种情况下非常有用,而且在许多其他情况下也非常有用。Windows错误日志是另一个非常非常有帮助的工具,如果你想看看it.Know你的工具

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-11-04 04:17:43

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

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

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

你需要

重新启动服务停止服务并将数据目录移动到新位置(保留permissions)

  • Create符号链接从旧位置到新位置

  • 赋予服务帐户(NetworkService)对符号链接的完全权限

  • 重新启动

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

代码语言:javascript
复制
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中选择了“删除数据”,这也不会在卸载时删除新的数据目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13136998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档