无法连接到 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 中的 web api 无法连接到主机上的 SQL Server,出现登录前握手错误
Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql
Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)