我之前创建了一个 SQL Server docker 容器实例,并且能够成功登录。我删除了该映像,并将代码从 docker run 命令迁移到具有支持 Dockerfile 的 docker-compose 中。
我在 dockerfile 中设置了 ENV MSSQL_SA_PASSWORD,但是现在,当我尝试登录时,它给出了一个错误:用户“sa”登录失败。似乎它将其缓存在某处,而我不再记得那个密码是什么了。
我该如何解决这个问题并让容器仅使用 Dockerfile 中设置的密码?
FROM mcr.microsoft.com/mssql/server:2022-latest
COPY source/database/scripts /usr/src/app
ENV MSSQL_SA_PASSWORD "MyPassword1"
ENV ACCEPT_EULA Y
# Run SQL Server process
ENTRYPOINT [ "/opt/mssql/bin/sqlservr" ]
谢谢
sa
Docker 中密码最常见的三个问题:SA_PASSWORD
用来代替的命令MSSQL_SA_PASSWORD
。后者是正确的论点,微软只是想让我们保持警惕。它不够复杂(请参阅此处和此处的规则) - 尽管在您的情况下,您在启动容器时会遇到麻烦。
它已经
$
足够复杂了,但它包含需要转义的特殊字符。例如,当您在命令行中通过字符串传递字符时,您需要对其进行转义 ($$
)。或者只是避免使用“特殊”的非字母数字字符。下划线可以很好地替代$
。我在“如何创建密码”部分中讨论了这一点:我不是 docker-master,但我记得 SQL Server 支持不同的身份验证方法并且“如果在安装过程中选择 Windows 身份验证,则安装程序会为 SQL Server 身份验证创建 sa 帐户,但该帐户已被禁用”请查看https://learn.microsoft.com/en-us/sql/relational-databases/security/choose-an-authentication-mode?view=sql-server-ver16