无法将SSMS连接到Docker上的SQL Server

2hh7jdfx  于 2022-10-22  发布在  Docker
关注(0)|答案(8)|浏览(335)

我遵循了官方的Microsoft documentation,并安装了SQL Server Docker映像
因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2


小时
我还可以使用sqlcmd和我的虚拟密码轻松连接到它


小时
问题是我无法通过SSMS连接到它:

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


小时
当然,在发布此问题之前,我阅读了其他StackOverflow posts,并尝试了多次登录:

  • 本地主机,1433
  • 本地主机:1433
  • 172.17.0.2,1433
  • 等等。。。

如果localhost不能像docker映像的IP地址那样工作,如何连接?

vmdwslir

vmdwslir1#

我有点晚了,但我希望这个答案对将来的人有帮助。伙计们,我遇到了和报道的完全相同的问题。
对我有效的连接方式如下:

127.0.0.1\{container_name},1433

我使用了以下图像:

mcr.microsoft.com/mssql/server

使用MSSQL_PID Express和端口:

  • "1433:1433"
  • “1434:1434/udp”
z18hc3ub

z18hc3ub2#

在我的例子中,我一直在本地计算机上运行MSSQL Sever,在docker上运行一个。关闭主机上的mssql服务器服务解决了此问题。
[编辑]:
添加Francesco所指出的技术原因,这对任何端口都适用:
这并不奇怪,如果端口1433被主机MSSQL占用,那么docker上的MSSQL就不能使用同一端口。

i2loujxw

i2loujxw3#

我认为,如果您遵循MS文档,您的cmd for init容器缺少MSSQL_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
aor9mmx1

aor9mmx14#

停止本地mssql服务器;
Windows+R=>SQLServerManager13.msc(已安装版本13)


小时
试了这个之后,我的问题就解决了

vs91vp4v

vs91vp4v5#

服务器设置看起来不错。你只需要给出“localhost”而不是“localhost,1433”。

3hvapo4f

3hvapo4f6#

我有相同的问题和答案在这里找到
https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash
正如上面提到的,“您的密码应遵循SQL Server默认密码策略,否则容器无法设置SQL Server,将停止工作”
我使用了以下两个命令

PS C:\Users\xxx>docker pull mcr.microsoft.com/mssql/server

PS C:\Users\xxx> docker run --name sqldb -p 1533:1433 -e 'SA_PASSWORD=Strong2@PWD12' -e ACCEPT_EULA=Y -d mcr.microsoft.com/mssql/server

然后,当您使用sqlserver登录时

- Server : 127.0.0.1, 1533
c9qzyr3d

c9qzyr3d7#

连接字符串正常。问题在于提供的凭据。可能在创建过程中添加的密码周围加引号。
你能运行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>'"
kmpatx3s

kmpatx3s8#

SQL server登录错误代码18456的可能原因
由于各种原因,可能会发生SQL Server登录失败。

  • 输入的用户名或密码不正确。
  • 启用了错误的身份验证模式。
  • 单个用户名在不同的服务器上可能具有不同的密码。因此,用户必须确保输入的是正确的组合。
  • 用户帐户的密码已过期。
  • 用户帐户已从服务器中删除。

也许,要解决这个问题,试试这个
首次启动SQL Server时,可能会在安全选项下启用“Windows身份验证”。在这种情况下,服务器将无法识别用户,用户将收到登录失败18456错误。
同样值得一看的帖子:-Unable to login to SQL Server + SQL Server Authentication + Error: 18456

相关问题