2017-11-09 22 views
1

私はUbuntu 16.04にMSSQL Server 2017をインストールしました。 パスワードを変更する必要があります。 私は、次のコマンドを使用してパスワードを変更することができることを知っている:Linux上のMS SQL Server:スクリプトを使用してパスワードを設定

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

しかし!私はスクリプトを介してパスワードを変更する必要があります。 この問題を解決するために、私は "expect"をインストールしてスクリプトを書いていた:

#!/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: 

しかし、それは動作しません。

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'.. 

OKは、のは、Windowsの認証を試してみましょう:私は、MSSQLサーバーに接続しようとすると、私はエラーを得

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 Serverに接続することはできません!

そして!

スクリプトでのみパスワードを変更する必要があります。 誰かが私を助けてくれますか?

答えて

1

スクリプトによる問題解決:

#!/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) 
0

より最も簡単な方法:

sudo MSSQL_SA_PASSWORD=${Password} /opt/mssql/bin/mssql-conf set-sa-password 
関連する問題