SQL Server容器Linux-用户'sa'登录失败

时间:2018-07-13 20:48:47

标签: sql-server linux docker kubernetes containers

我正在尝试按照此处的教程进行操作:

https://docs.microsoft.com/en-us/sql/linux/tutorial-sql-server-containers-kubernetes?view=sql-server-linux-2017

按照本教程的指示,我创建了一个kubernetes集群并部署了一个linux sql服务器容器。

我按照上面的链接创建了密码,并且可以使用** kubectl get secret **来解密和验证内容,如此处的链接所示:https://kubernetes.io/docs/concepts/configuration/secret/

我使用一个永久卷以及一个永久卷声明,并部署sqldeployment.yaml,如上面的链接中所述。

我使用 kubectl attach -i -t 附加到容器,并且可以看到日志流。

当我尝试登录时,它说

**SQL Management Studio:** 
Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)

**kubectl attach output stream**
Error: 18456, Severity: 14, State: 8.
Login failed for user 'sa'. Reason: Password did not match that for the login provided.

我尝试了各种形式的密码,包括上面的Microsoft教程链接上的一种。

问题: -如何使用正确的密码设置Linux容器,以便可以按照上述Microsoft教程中的指示登录SQL Server? -关于我可能做错了什么的指示?

2 个答案:

答案 0 :(得分:1)

您的密码必须符合密码政策。我从Microsoft的官方网站复制了此内容。

密码复杂度策略旨在通过增加可能的密码数量来阻止暴力攻击。实施密码复杂度策略后,新密码必须符合以下准则:

密码不包含用户的帐户名。

密码至少八个字符。

密码包含以下四个类别中的三个类别的字符:

拉丁大写字母(A到Z)

拉丁小写字母(a到z)

以10位数字为基础(0到9)

非字母数字字符,例如:感叹号(!),美元符号($),数字符号(#)或百分比(%)。

答案 1 :(得分:0)

答案是我正在使用Kubernetes持久卷来存储数据库文件。我可能是通过一次将错误的密码初始化到master数据库中而存储了错误的密码,该数据库的数据存储在永久卷中。

在多次更改Kubernetes机密中存储的密码并重新部署sql服务器服务后,我感到困惑的是密码未重置,并且仍然无法登录。删除永久卷和永久卷声明后,由于有效地重新安装了主数据库,因此我能够重置密码并正确地对其进行初始化。

似乎在启动时初始化了密码后,该密码将存储在永久卷上的master数据库中。因此,更改Kubernetes机密-wbich存储密码的值以进行一次ONCE-OFF初始化-无效。

以上情况很容易理解,但可能会造成混乱。

解决方案是删除永久卷(pv)和永久卷声明(pvc),这有效地删除了数据文件,包括在服务器上配置了密码的master数据库的数据文件。