我试图在mariadb中更改数据目录,在更改ini文件中的数据目录路径后,然后尝试重启服务,它无法启动!显示如下警告:
> Error 1067: The process terminated unexpectedly
在MySQL中,数据目录的更改工作正常。但我不知道为什么同样不能使用mariadb
。
只有默认路径正在运行...
答案 0 :(得分:2)
我应该提到精彩的系统内部工具(例如procmon),这不仅在这种情况下而且在许多其他情况下都非常有用。 Windows错误日志是第二个非常有用的工具,如果您要查看它。知道工具
现在针对这种情况提出具体建议 - 运行MariaDB服务的用户应该能够在datadir目录中创建文件。默认情况下,MariaDB使用网络服务,而MySQL使用本地系统(最强大的Windows用户)。
此更改使MariaDB更安全(如果服务被黑客攻击的影响较小),但是您不应期望NetworkService对任何目录具有读写访问权限,例如LocalSystem。
因此,要解决您的问题,您要么使目录可写入NetworkService,要么将服务用户更改为对目录具有读写权限的用户。
答案 1 :(得分:0)
最近有人问过这个,我想出了另一个答案,涉及符号链接。我觉得这个解决方案可能最简单,my.ini或服务配置不需要搞乱。
如何在安装后移动数据目录(如果磁盘C:\已满,请执行此操作)。
不幸的是,MSI无法做到这一点,因此需要手动完成。
你需要
以下是如何从脚本(需要以完全管理员权限运行,例如在提升的命令行上)执行此操作的说明。我使用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。