Eu havia criado uma instância de contêiner docker do SQL Server anteriormente e consegui efetuar login com sucesso. Removi essa imagem e estava migrando o código de um comando docker run para um docker-compose com um Dockerfile de backup.
Tenho o ENV MSSQL_SA_PASSWORD definido no dockerfile, mas agora, quando tento efetuar login, aparece um erro: Falha no login para o usuário 'sa'". Parece que ele está armazenando em cache em algum lugar e não lembro mais qual era a senha.
Como posso resolver isso e fazer com que o contêiner use apenas a senha definida no 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" ]
Obrigado
Os três problemas mais comuns com a
sa
senha no Docker:O comando usado
SA_PASSWORD
em vez deMSSQL_SA_PASSWORD
. O último é o argumento correto, a Microsoft só gosta de nos manter alertas.Não é complexo o suficiente (veja as regras aqui e aqui ) - embora no seu caso você teria tido problemas para iniciar o contêiner.
É complexo o suficiente , mas contém caracteres especiais que exigem escape. Quando você passa por uma string o caractere
$
na linha de comando, por exemplo, você precisa escapá-lo ($$
). Ou apenas evite caracteres não alfanuméricos que são "especiais". Underline pode ser uma boa alternativa para$
. Eu falo sobre isso na seção "Como criar uma senha" aqui:Não sou um mestre do docker, mas lembro que o SQL Server oferece suporte a diferentes métodos de autenticação e "Se você selecionar a Autenticação do Windows durante a instalação, a instalação criará a conta sa para autenticação do SQL Server, mas ela estará desabilitada". Dê uma olhada em https://learn.microsoft.com/en-us/sql/relational-databases/security/choose-an-authentication-mode?view=sql-server-ver16