You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中SA账号无法创建MSSQL数据库的问题求助

解决Docker中MSSQL创建数据库时的文件权限错误

问题核心分析

你看到的CREATE FILE encountered operating system error 5(Access is denied.)是操作系统层面的权限问题,和sa账号的SQL权限无关——sa默认拥有所有SQL层面的权限,但MSSQL服务进程在容器里没有写入/opt/mssql/data目录的权限。

解决方案步骤

1. 检查容器内数据目录权限

先进入运行中的MSSQL容器,查看目标目录的权限状态:

docker exec -it <你的容器名/ID> bash
ls -ld /opt/mssql/data

正常情况下,这个目录的所有者应该是mssql用户(UID=10001),权限至少是drwxr-xr-x。

2. 修复容器内目录权限

如果权限异常,在容器内执行以下命令修复:

chown -R mssql:mssql /opt/mssql/data
chmod -R 755 /opt/mssql/data

执行完成后退出容器,重新运行你的初始化脚本。

3. 排查宿主机挂载目录权限(如果用了卷挂载)

如果你给/opt/mssql/data挂载了宿主机目录,还要确保宿主机侧的目录权限正确:

chown -R 10001:10001 <宿主机挂载目录路径>
chmod -R 755 <宿主机挂载目录路径>

修改后重启MSSQL容器。

4. 重置目录(可选,无需保留旧数据时)

如果不需要保留旧数据,直接删除宿主机的挂载目录,重新创建容器——MSSQL会自动初始化目录并设置正确的权限。

验证权限修复

修复后可以在容器内验证权限是否正常:

docker exec -it <容器名> su - mssql
touch /opt/mssql/data/test.txt

如果能成功创建文件,说明权限问题已解决,再运行初始化脚本即可。

内容的提问来源于stack exchange,提问作者Enderhippo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:00:14