Linux 上的 MS SQL Server:使用脚本设置密码



我已经在Ubuntu 16.04上安装了MSSQL Server 2017。现在,我必须更改密码。我知道我可以使用以下命令更改密码:

sudo systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf set-sa-password

但!我需要通过脚本更改密码。还行。为了解决这个问题,我安装了"期望"并编写了脚本:

#!/bin/bash
/usr/bin/expect <<EOD
spawn sudo /opt/mssql/bin/mssql-conf set-sa-password
expect "password:"
send "Pa$$wo4d!r"
expect "password:"
send "Pa$$wo4d!r"
interact
EOD

双重密码 - 密码+确认。我已经运行了脚本:

ubuntu:~# bash 1.sh
spawn sudo /opt/mssql/bin/mssql-conf set-sa-password
Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password: 

但它不起作用。当我尝试连接到mssql服务器时,出现错误:

ubuntu:~# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Pa$$wo4d!
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'SA'..

好的,让我们尝试Windows授权:

ubuntu:~#  /opt/mssql-tools/bin/sqlcmd -S localhost -E -C
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : SSPI Provider: No 
Kerberos credentials available.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Cannot generate SSPI context.

在更改密码之前,我无法连接到 MSSQL 服务器!

和!

我只需要通过脚本更改密码。有人可以帮我吗?

更简单的方法:

sudo MSSQL_SA_PASSWORD=${Password} /opt/mssql/bin/mssql-conf set-sa-password

通过脚本解决问题:

#!/usr/bin/python
import pexpect
ssh_cmd = '/opt/mssql/bin/mssql-conf set-sa-password'
timeout=30
child = pexpect.spawn(ssh_cmd, timeout=timeout)
child.expect(['password:'])
child.sendline('Pa$$wo4d!')
child.expect(['password:'])
child.sendline('Pa$$wo4d!')
child.expect(pexpect.EOF)
child.close()
if 0 != child.exitstatus:
    raise Exception(stdout)

相关内容

  • 没有找到相关文章

最新更新