Sql server 无法将SSMS连接到Docker上的SQL Server
我遵循了微软的官方标准,安装了SQL Server Docker镜像 因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2 我还可以使用带有伪密码的sqlcmd轻松连接到它 问题是我无法通过SSMS连接到它:Sql server 无法将SSMS连接到Docker上的SQL Server,sql-server,docker,containers,ssms,sqlcmd,Sql Server,Docker,Containers,Ssms,Sqlcmd,我遵循了微软的官方标准,安装了SQL Server Docker镜像 因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2 我还可以使用带有伪密码的sqlcmd轻松连接到它 问题是我无法通过SSMS连接到它: Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456) 当然,在发布此问题之前,我阅读了其他StackOverflow,并尝试了多次登录: 本地主机,1433 本地主机
Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
当然,在发布此问题之前,我阅读了其他StackOverflow,并尝试了多次登录:
- 本地主机,1433
- 本地主机:1433
- 172.17.0.21433
- 等等
如果localhost不能像docker映像的IP地址那样工作,我如何连接 服务器设置看起来不错。您只需要给出“localhost”而不是“localhost,1433”。连接字符串没有问题。问题在于提供的凭据。可能在创建过程中添加的密码周围加上引号 您是否可以运行
docker exec-it sql1“bash”
这将提供一个容器外壳。运行echo$SA_PASSWORD
查看密码是否包含引号以及是哪个引号。复制结果并将其粘贴到密码字段中,然后查看它是否有效
您还可以使用以下命令更改密码:
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourStrong@Passw0rd>" `
-Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
docker exec-it sql1/opt/mssql-tools/bin/sqlcmd`
-S localhost-U SA-P“”`
-Q“使用密码=''更改登录SA”
我认为,如果您遵循MS文档,您的cmd for init容器缺少MSSQL\u PID
参数,我不知道为什么SSMS需要它,我们可以稍后了解。但是你应该试试这个
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Helloworld123" -e "MSSQL_PID=Express" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
SQL server登录错误代码的可能原因
18456
SQL Server登录失败可能是由于各种原因造成的
- 输入的用户名或密码不正确
- 启用了错误的身份验证模式
- 一个用户名在不同的服务器上可能有不同的密码。因此,用户必须确保输入了正确的组合
- 用户帐户的密码已过期
- 用户帐户已从服务器中删除
就我而言,我在本地机器上运行MSSQL服务器+在docker上运行一台。关闭主机上的mssql服务器服务解决了问题。您如何启动容器?当使用docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=Your$trongPw”-p 1433:1433时,不要在密码周围加引号。还要注意,在Windows Powershell中运行时使用双引号,在Linux中使用单引号。运行Express edition时,您必须连接到
172.17.0.21433\SQLEXPRESS
。是否有防火墙阻止SSMS连接?该错误表明您已连接到容器实例。单击“错误”对话框中的“显示详细信息”,查看是否提供了更多信息。此外,请检查容器中的sql server错误日志以获取有关失败登录尝试的其他信息:cat/var/opt/mssql/log/errorlog
docker实例是否在运行sql客户端的同一台计算机上运行?@rfkortekaas,是的,我在同一台计算机上有SSMS和docker hi@TWP,命令docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=HelloWorld123”-p 1433:1433-t 3c7ee124fdd6
从守护进程返回的错误响应:驱动程序未能在端点上编程外部连接。\u shirley(064f1bfa7b66d68995f76c98cb80594807ac30e9659b35e1f217885dedb9094b):0.0.0.0:1433绑定失败:端口已分配。谢谢@rfkortekaas,用纯文本显示密码的好技巧,没有引号:我还将密码从HelloWorld123
更改为HelloHell123
,没有乐趣。但我可以通过命令行登录,只是无法使用同一用户/Pas登录的SSMS剑术这很奇怪,谢谢,如果这是问题的话,我永远不会意识到。