programing

SqlServer: 사용자 로그인 실패

powerit 2023. 7. 2. 21:03
반응형

SqlServer: 사용자 로그인 실패

저는 매우 간단한 JDBC 로그인 테스트 프로그램을 작성했습니다.그리고 온갖 문제를 겪었지만, 저는 거의 그것을 작동시켰습니다.거의, 이 문제를 극복할 수 없을 것 같습니다.

SQL Server 예외:사용자 xxxxxx에 대한 로그인 실패

저는 간단한 데이터베이스 PersonInfo를 만든 후 user1 password1(SQL 인증)을 만들었습니다.그리고 시도한 후 모든 것을 데이터베이스에 연결할 수 없었습니다.

Windows 7에서 SqlServer2008을 사용하고 있으며 Microsoft의 최신 JDBC 드라이버를 사용하고 있습니다.

내 코드는:

import java.sql.*;

public class hell {
public static void main(String[] args) {
    
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn=  DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=PersonInfo;user=Sohaib;password=0000;");


System.out.println("connected");
       }

    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

예외는 다음과 같습니다.

Exception: Unable to get connect
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'Sohaib'.
and all other supporting errors.

SQL Server가 '혼합 모드 인증' 상태입니까?Windows 로그인 대신 SQL 서버 계정으로 로그인하려면 이 작업이 필요합니다.

서버의 속성을 확인한 다음 보안을 통해 이를 확인할 수 있습니다. 서버는 'SQL Server and Windows Authentication Mode'여야 합니다.

이 문제는 사용자가 유효성을 검사할 수 없는 자격 증명으로 로그인하려고 할 때 발생합니다.이 문제는 다음과 같은 시나리오에서 발생할 수 있습니다.

시나리오 1: 로그인이 SQL Server 로그인일 수 있지만 서버는 윈도우즈 인증만 수락합니다.

시나리오 2: SQL Server 인증을 사용하여 연결하려고 하지만 사용된 로그인이 SQL Server에 없습니다.

시나리오 3: 로그인이 Windows 인증을 사용할 수 있지만 로그인이 인식할 수 없는 Windows 주체입니다.인식할 수 없는 Windows 주체는 Windows에서 로그인을 확인할 수 없음을 의미합니다.Windows 로그인이 신뢰할 수 없는 도메인에서 이루어졌기 때문일 수 있습니다.

사용자가 잘못된 정보를 입력했을 수도 있습니다.

http://support.microsoft.com/kb/555332

이 경우 "SQL Server and Windows Authentication mode(SQL 서버 및 Windows 인증 모드)" 옵션을 활성화해야 했습니다. 아래의 모든 단계를 수행하십시오.

1 - 서버에서 마우스 오른쪽 버튼을 클릭합니다.

2 - 보안 옵션으로 이동합니다.

3 - "SQL Server and Windows Authentication mode" 옵션을 선택합니다.

4 - OK 버튼을 클릭합니다.

5 - SQL Express 서비스를 다시 시작합니다("Windows 키"를 키보드에 입력하고 "서비스"를 입력한 다음 키 입력).

그 후 사용자와 비밀번호로 로그인할 수 있었습니다.

동일한 문제가 발생하여 Windows 사용자 이름을 SQL에 추가한 다음 서버에 추가하여 문제를 해결했습니다.

먼저 Windows 사용자 이름으로 새 로그인을 만듭니다.

검색을 클릭한 다음 상자에 이름을 입력하고 이름 확인을 클릭합니다.enter image description here

그런 다음 해당 사용자를 서버에 추가합니다.

Server > Permissions > Search > Browse > 사용자 선택에서 마우스 오른쪽 버튼을 클릭합니다(이제 생성한 사용자가 목록에서 사용 가능함을 알 수 있습니다).

enter image description here

도움이 되었으면 좋겠습니다 ;-)

EntityFramework 연결에서 연결 문자열을 재사용할 때 이 오류가 발생했습니다.연결 문자열에 사용자 이름과 암호가 있지만 지정하지 않았습니다.

"Persist Security Info=True"입니다.

따라서 연결을 설정한 후 연결 문자열에서 자격 증명이 제거되었습니다(그래서 불완전한 연결 문자열을 재사용했습니다).물론 이 설정을 사용할 때는 항상 두 번 생각해야 하지만 이 경우에는 문제가 없었습니다.

(sql-cli를 사용하여) Azure의 SQL DB에 연결하려고 할 때 동일한 오류 메시지가 표시됩니다.간단한 해결책은 다음과 같은 작은 따옴표로 암호를 푸는 것이었습니다.

mssql -s server.database.windows.net -u user@server -p 'your_password' -d your_db -e

또한 사용자 속성 "상태" 탭에서 계정이 잠겨 있지 않은지 확인합니다.

저도 같은 문제를 발견했습니다. 하지만 걱정하지 마십시오. 해결 방법은 매우 간단합니다.

이 오류 "Login Failed for User(Microsoft SQL Server, Error: 18456)"특정 서버 인증 유형으로 SQL Server에 로그인할 때 잘못된 자격 증명을 입력했음을 의미한다는 기본 용어를 먼저 이해해야 합니다.enter image description here

서버 인증에서 Windows 인증 모드 옵션을 선택한 위치

그리고 appsettings.json 파일의 myConnectionString에는 다음과 같은 연결 문자열이 있습니다.

Server=DESKTOP-PK4BJF5;Database=lms;Trusted_Connection=false;MultipleActiveResultSets=true;TrustServerCertificate=true

여기서 "신뢰할 수 있는 연결"은 데이터베이스 서버에 연결할 때 사용할 인증확인 유형을 지정하기 위해 데이터베이스 연결 문자열에 사용되는 매개변수입니다.

"trusted-connection"이 "true" 또는 "SSPI"(보안 지원 공급자 인터페이스)로 설정되어 있으면 연결이 Windows 인증을 사용하여 사용자를 인증함을 의미합니다.즉, 현재 로그인한 Windows 사용자의 자격 증명이 데이터베이스 서버에 연결하는 데 사용됩니다.이러한 유형의 인증을 "통합 보안"이라고도 합니다.

"trusted-connection"이 "false"로 설정되어 있으면 연결이 SQL Server 인증을 사용하여 사용자를 인증함을 의미합니다.즉, 연결 문자열에는 데이터베이스 서버에 연결하는 데 사용되는 사용자 ID와 비밀번호가 포함됩니다.

연결 문자열 행을 업데이트하는 중이며 /false 대신 SSPI만 씁니다.

"Server=DESKTOP-PK4BJF5;Database=lms;Trusted_Connection=SSPI;MultipleActiveResultSets=true;TrustServerCertificate=true",

위해서Can not connect to the SQL Server. The original error is: Login failed for user 'username'.오류. MSSQL 서버 측의 포트 요구 사항을 충족해야 합니다.

Windows 방화벽에서 기본 포트 1433을 초과하는 다른 포트를 구성해야 합니다.

https://stackoverflow.com/a/25147251/1608670

Windows 인증 대신 SQL Server 인증으로 새 로그인 계정을 생성하여 Linux/php를 SQL Server에 연결하는 문제를 해결했습니다.

자동화로 테스트 사용자를 생성하는 다른 사용자가 있을 경우를 대비하여...

테스트 프로세스의 일부로 사용자를 다시 생성했기 때문에 동일한 오류가 발생했습니다.이로 인해 기본 SID가 변경되어 SQL에서 사용자를 제대로 인증할 수 없습니다.

이전에 생성된 사용자(사용자 이름이 동일)가 인스턴스에 더 이상 존재하지 않도록 테스트 스크립트에 drop login 명령을 추가하여 수정했습니다.

저도 같은 문제에 직면했습니다.나는 Entity Framework를 사용했고 DB가 자동으로 생성될 것이라고 생각했습니다.DB가 존재하고 이름이 올바른지 확인하십시오.

내 경우 springboot application.properties 파일에서 아래와 같이 구성한 다음 서비스 계정을 사용하여 sqlserver 데이터베이스에 연결할 수 있습니다.

url=jdbc:sqlserver://SERVER_NAME:PORT_NUMBER;databaseName=DATABASE_NAME;sendStringParametersAsUnicode=false;multiSubnetFailover=true;integratedSecurity=true
    jdbcUrl=${url}
    username=YourDomain\\$SERVICE-ACCOUNT-USER-NAME
    password=
    hikari.connection-timeout=60000
    hikari.maximum-pool-size=5
    driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

이 연결 문자열을 사용해 보십시오.

Server=ServerName;Database=DbName;Trusted_Connection=SSPI;MultipleActiveResultSets=true;TrustServerCertificate=true

다음 방법을 사용할 수 있습니다: 추가Trusted_Connection=True;연결 문자열에 연결합니다.

Windows 인증을 사용하는 경우 해당 사용자를 사용하여 Windows에 한 번 이상 로그인해야 합니다.

이전에 Windows 인증을 문제 없이 사용하다가 아래 오류가 발생했습니다.

"SSPI 컨텍스트를 생성하지 못했습니다."

연결 문자열을 변경하여 확인하는 스위치

Server=127.0.0.1;Database=[DB_NAME];Trusted_Connection=True;

로.

Server=127.0.0.1;Database=[DB_NAME];Trusted_Connection=False;

그리고 다음 오류가 발생했습니다.

"사용자 "에 대해 로그인하지 못했습니다.

이 문제를 해결하기 위해 저는 사용했습니다.sa사용자. 액세스sa필요한 경우 SQL 서버에서 암호를 업데이트할 사용자Security > Logins > sa (right click) > Properties > General)연결 문자열을 업데이트합니다.

Server=127.0.0.1;Database=[DB_NAME];User Id=sa;Password=[YOUR_PASSWORD]

원하는 다른 사용자를 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/17372606/sqlserver-login-failed-for-user

반응형