我正在尝试按照此处的教程进行操作:
按照教程中的指示,我创建了一个 kubernetes 集群并部署了一个 linux sql server 容器。
我创建了 secret ,如上面的链接所示,并且可以使用 **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.
我尝试了各种密码,包括上面微软教程链接中的密码。
问题: - 如何使用正确的密码设置 linux 容器,以便我可以按照上述 Microsoft 教程中的指示登录到 SQL Server? - 关于我可能做错了什么的任何指示?
最佳答案
答案是我使用 Kubernetes 持久卷来存储数据库文件。我可能通过将密码初始化一次到 master 数据库中而存储了错误的密码,其数据存储在持久卷中。
多次更改存储在 Kubernetes secret 中的密码并重新部署 sql server 服务后,我很困惑,密码没有重置,我仍然无法登录。一旦我删除了持久卷和持久卷声明,我就能够重置密码并正确地重新初始化它,因为 master 数据库已经有效地重新安装。
似乎一旦密码在启动时被初始化,它就会存储在持久卷上的 master 数据库中。因此,更改 Kubernetes secret - wbich 存储密码值以进行一次性初始化 - 没有任何效果。
上面的场景很容易理解,但也很容易混淆。
解决方案是删除持久卷 (pv) 和持久卷声明 (pvc),这有效地删除了数据文件,包括在服务器上配置密码的 master 数据库的数据文件。
关于sql-server - SQL Server Container Linux - 用户 'sa' 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51332618/