Sql server Mac上带Docker的SQL Server:用户登录失败';sa';。

Sql server Mac上带Docker的SQL Server:用户登录失败';sa';。,sql-server,macos,docker,visual-studio-code,Sql Server,Macos,Docker,Visual Studio Code,我正试图在Mac电脑上与Docker一起使用SQL Server。 我已经安装了映像,正在运行SQL Server 当我运行上述代码并使用“docker ps”检查正在运行的容器时,容器总是停止。因此,我运行以下命令以使用容器id启动容器 docker start 0e84faabe9b35b2e4e8e39be3f389b38c151a3a6e7c3c82995f3ea6dc0e8ed1e 然后sql容器继续运行 我想用VS代码连接到sql server,但消息一直说用户“sa”登录失败。

我正试图在Mac电脑上与Docker一起使用SQL Server。 我已经安装了映像,正在运行SQL Server

当我运行上述代码并使用“docker ps”检查正在运行的容器时,容器总是停止。因此,我运行以下命令以使用容器id启动容器

docker start 0e84faabe9b35b2e4e8e39be3f389b38c151a3a6e7c3c82995f3ea6dc0e8ed1e 然后sql容器继续运行

我想用VS代码连接到sql server,但消息一直说用户“sa”登录失败。 我已经安装了sql cli来检查sql连接,但它不能正常工作

我尝试使用以下凭据连接到sql server: mssql-USA-PSA123!这是我用来启动sql容器的

有人能帮我吗

这就是我在VS代码中得到的

调试:

让我们启动容器:

[fedora@myhost ~]$ sudo docker run -d -p 1433:1433 -e SA_PASSWORD='sa123!' -e ACCEPT_EULA=Y -i microsoft/mssql-server-linux   
0031f2c49b66596cb8dc8cfec6d14351406fb924e39bd8227dfbcf7e23b67d54
容器未运行:(

让我们看看日志:

[fedora@myhost ~]$ sudo docker logs 0031f2c49b66596cb8dc8cfec6d14351406fb924e39bd8227dfbcf7e23b67d54 
Configuring Microsoft(R) SQL Server(R)...
Microsoft(R) SQL Server(R) setup failed with error code 1. Please check the setup log in /var/opt/mssql/log for more information.
哦,好的,让我想想。再次启动容器:

[fedora@myhost ~]$ sudo docker start 0031f2c49b66                                                                                                                                                                  
0031f2c49b66
现在正在运行吗

[fedora@myhost ~]$ sudo docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
0031f2c49b66        microsoft/mssql-server-linux   "/bin/sh -c /opt/m..."   28 seconds ago      Up 1 second         0.0.0.0:1433->1433/tcp   festive_meninsky
让我们进去看看上次失败的原因:

[fedora@myhost ~]$ sudo docker exec -it 0031f2c49b66 /bin/bash       
root@0031f2c49b66:/# cd /var/opt/mssql/log/
root@0031f2c49b66:/var/opt/mssql/log# ls
HkEngineEventFile_0_131307476136660000.xel  errorlog    errorlog.2  log_1.trc                  system_health_0_131307476143850000.xel
HkEngineEventFile_0_131307476639820000.xel  errorlog.1  log.trc     setup-20170205-055329.log  system_health_0_131307476647330000.xel
root@0031f2c49b66:/var/opt/mssql/log# cat errorlog.1 
...
2017-02-05 05:53:34.65 spid17s     Server setup is starting
2017-02-05 05:53:34.65 spid17s     Error: 33062, Severity: 16, State: 2.
2017-02-05 05:53:34.65 spid17s     Password validation failed. The password does not meet SQL Server password policy requirements because it is too short. The password must be at least 8 characters.
2017-02-05 05:53:34.66 spid17s     An error occurred while setting the server administrator (SA) password: error 33062, severity 16, state 2.
2017-02-05 05:53:34.66 spid17s     An error occurred during server setup. See previous errors for more information.
...
好的,让我们看一下相关的部分:

强系统管理员(SA)密码:至少8个字符 包括大写、小写字母、以10为基数的数字和/或 非字母数字符号

嗯,让我们从头开始,记住:

[fedora@myhost ~]$ sudo docker run -d -p 1433:1433 -e SA_PASSWORD='$uP3RC0mpl3Xp@$$w0rD' -e ACCEPT_EULA=Y microsoft/mssql-server-linux                                                                             
8fcc46d9ae498948dc3cb458fb3169347fcb4f582dc6266b6569f540f2badf1d
让我们看看容器现在是否运行:

[fedora@myhost ~]$ sudo docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
8fcc46d9ae49        microsoft/mssql-server-linux   "/bin/sh -c /opt/m..."   8 seconds ago       Up 6 seconds        0.0.0.0:1433->1433/tcp   competent_kalam
让我们看看是否可以建立db连接:

[fedora@myhost ~]$ tsql -H localhost -p 1433 -P '$uP3RC0mpl3Xp@$$w0rD' -U sa
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "ISO-8859-1"
1> quit

没有一台合适的电脑来检查,但当我在密码中使用
$
时,我把自己逼疯了,然后不得不逃出密码。你有没有试着逃过这一关(
'sa123\!'
)?(您也可以首先尝试使用更复杂的密码启动容器-该密码似乎不够强大,无法通过基本验证,这也可以解释为什么它最初无法启动。)感谢您给出了明确解释的答案。
[fedora@myhost ~]$ tsql -H localhost -p 1433 -P '$uP3RC0mpl3Xp@$$w0rD' -U sa
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "ISO-8859-1"
1> quit