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

时间:2019-09-12 12:13:31

标签: sql sql-server docker

我已经在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:错误:SQL Server的Microsoft ODBC驱动程序17:登录超时已过期。   Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x102。   Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关更多信息,请参见SQL Server联机丛书。

我检查了一下,启用了tcp \ ip

我的错误在哪里?

2 个答案:

答案 0 :(得分:1)

您的密码似乎不是问题。我连接正常,无法重现该问题。更改端口映射,然后重试:

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

答案 1 :(得分:0)

在我的情况下,密码“ $ cthulhu1988”未通过复杂性验证。容器没有收到错误,而是启动时没有任何错误迹象。但是,之后我将无法再以SA身份登录。

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

  

1Secure * Password1

现在有了复杂性有效的密码,终于可以以SA身份登录了。