2017-11-09 16 views
1

우분투 16.04에 MSSQL Server 2017을 설치했습니다. 이제 비밀번호를 변경해야합니다. 나는 다음과 같은 명령을 사용하여 암호를 변경할 수 있다는 사실을 알고 :MS SQL Server on Linux : 스크립트를 사용하여 암호를 설정하십시오.

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

확인,의가 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 서버에 연결할 수 없습니다!

그리고!

스크립트를 통해서만 비밀번호를 변경해야합니다. 누군가 제발 나를 도와 줄 수 있습니까?

답변

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