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

Linux下docker部署mssql2017修改排序规则报无mssql用户错误如何解决

解决方法

报错根因

第一个No passwd entry for user 'mssql'报错是因为容器执行上下文缺少默认mssql用户配置,手动创建用户后出现权限报错是因为/var/opt/mssql目录归属权为root,mssql用户无读写权限。

推荐方案(无需手动处理用户权限)

官方镜像支持通过环境变量直接指定排序规则,兼容性最好,不会触发权限类问题:

  • 停止原有运行的mssql容器
  • 执行如下命令启动容器,启动时自动完成排序规则配置:
docker run -e "MSSQL_SA_PASSWORD=你的SA密码" \
  -e "MSSQL_COLLATION=SQL_Latin1_General_CP1_CI_AS" \
  -v 你的持久化存储卷/本地目录:/var/opt/mssql \
  mcr.microsoft.com/mssql/server:2017

注意替换命令中的你的SA密码、你的持久化存储卷/本地目录为你实际使用的配置;如果是已经初始化过的实例,该方案需要先清空持久化存储中的已有数据才会生效

手动修改方案(适配已有数据无需清空的场景)

如果你需要保留已有数据,不想重新初始化,按如下步骤操作:

  1. 以root身份进入运行中的mssql容器:
    docker exec -it --user root <你的容器名称/容器ID> bash
  2. 递归修改mssql数据目录的归属权:
    chown -R mssql:mssql /var/opt/mssql
  3. 切换为mssql用户执行排序规则修改命令:
    su mssql -c 'echo "SQL_Latin1_General_CP1_CI_AS" | /opt/mssql/bin/mssql-conf set-collation'
  4. 退出容器后重启实例生效:
    docker restart <你的容器名称/容器ID>

注意事项

修改排序规则会重置系统库配置,操作前建议提前备份所有用户数据库,修改完成后验证业务数据完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:02