无法连接到 Docker 上的 SQL 数据库

Posted

技术标签:

【中文标题】无法连接到 Docker 上的 SQL 数据库【英文标题】:Cannot connect to SQL Database on Docker 【发布时间】:2020-01-14 07:37:05 【问题描述】:

我已经在 docker 上配置了 db

这是我如何下载 sql

docker pull microsoft/mssql-server-linux:2017-latest

然后我执行这个命令

docker run -e "ACCEPT_EULA=Y" -e  'SA_PASSWORD=$cthulhu1988' -p 1433:1433 --name test -d microsoft/mssql-server-linux:2017-latest

然后我尝试通过此命令连接到它

docker exec -it test /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '$cthulhu1988'

但我得到了这个错误

**Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'SA'..**

更新

我让ipconfig 并试图用我的 IPv4 地址来做到这一点

docker exec -it test /opt/mssql-tools/bin/sqlcmd -S 10.0.75.1 -U SA -P '$cthulhu1988'

现在我有这个错误

Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:登录超时已过期。 Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:TCP 提供程序:错误代码 0x102。 Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。。

我查过了,tcp\ip 已启用

我的错误在哪里?

【问题讨论】:

所以你解决了密码问题,尽管我仍然不同意这是一个复杂性问题(例如,将$ 换成#)。现在从您的问题中删除关于密码复杂性的鹅追逐,让我们专注于您尚未解决的问题。 【参考方案1】:

您的密码似乎不是问题。我连接得很好,无法重现问题。更改端口映射并重试:

docker run -e "ACCEPT_EULA=Y" -e  'SA_PASSWORD=$cthulhu1988' -p 1488:1433 --name test -d microsoft/mssql-server-linux:2017-latest

【讨论】:

【参考方案2】:

在我的例子中,密码“$cthulhu1988”没有通过复杂性验证。容器没有收到错误,而是在没有任何错误迹象的情况下启动。但是,我不能再以 SA 身份登录。

我停止并删除了我的容器,然后使用“docker run”重新创建了它,但这次我将密码更改为

1安全*密码1

现在有了一个复杂有效的密码,我终于可以作为 SA 登录了。

【讨论】:

以上是关于无法连接到 Docker 上的 SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法从 docker 容器连接到 SQL Server

Docker 中的 web api 无法连接到主机上的 SQL Server,出现登录前握手错误

无法连接到 docker 容器内的 SQL Server

Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql

无法连接到 Mac OS X 上的 Docker 守护程序

Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)