방법: SQL Server 인증을 사용하여 연결

PHP 드라이버 다운로드

MICROSOFT Drivers for PHP for SQL Server는 SQL Server에 연결할 때 SQL Server 인증을 지원합니다.

SQL Server 인증은 Windows 인증이 불가능한 경우에만 사용해야 합니다. Windows 인증과 연결하는 방법에 대한 자세한 내용은 방법: SWindows 인증을 사용하여 연결을 참조하세요.

SQL Server 인증을 사용하여 SQL Server에 연결할 때는 다음 사항을 고려해야 합니다.

  • 서버에서 SQL Server 혼합 모드 인증을 사용하도록 설정해야 합니다.

  • 연결을 설정하려고 할 때 사용자 ID 및 비밀번호(SQLSRV 드라이버의 UIDPWD 연결 특성)를 설정해야 합니다. 사용자 ID 및 비밀번호는 유효한 SQL Server 사용자 및 비밀번호에 매핑되어야 합니다.

참고 항목

닫는 중괄호(})가 포함된 비밀번호의 경우 두 번째 닫는 중괄호로 이스케이프되어야 합니다. 예를 들어, SQL Server 비밀번호가 "pass}word"인 경우 PWD 연결 특성의 값을 "pass}}word"로 설정해야 합니다.

SQL Server 인증을 사용하여 SQL Server에 연결하는 경우 다음과 같은 예방 조치를 취해야 합니다.

  • 네트워크를 통해 웹 서버에서 데이터베이스로 전달된 자격 증명을 보호(암호화)합니다. 자격 증명은 SQL Server 2005부터 기본적으로 암호화됩니다. 보안을 강화하려면 서버로 전송된 모든 데이터를 암호화하기 위해 연결 암호화 특성을 "켜기"로 설정합니다.

참고 항목

데이터 암호화는 계산 집약적일 수 있으므로 연결 암호화 특성을 "켜기"로 설정하면 성능이 저하될 수 있습니다.

  • 연결 특성 UIDPWD 에 대한 값을 PHP 스크립트의 일반 텍스트에 포함하면 안 됩니다. 이러한 값은 적절한 제한된 권한이 있는 애플리케이션별 디렉터리에 저장되어야 합니다.

  • sa 계정을 사용하지 않아야 합니다. 원하는 권한을 보유한 데이터베이스 사용자에게 애플리케이션을 매핑하고 강력한 비밀번호를 사용합니다.

참고 항목

연결을 설정할 때 사용자 ID 및 비밀번호 이외의 연결 특성을 설정할 수 있습니다. 지원되는 연결 특성의 전체 목록은 연결 옵션을 참조하세요.

SQLSRV 예시

다음 예시에서는 SQL Server 인증이 포함된 SQLSRV 드라이버를 사용하여 SQL Server의 로컬 인스턴스에 연결합니다. 필수 UIDPWD 연결 특성 값을 C:\AppData 디렉터리의 애플리케이션 관련 텍스트 파일인 uid.txtpwd.txt에서 가져옵니다. 연결이 설정된 후 사용자 로그인을 확인하기 위해 서버가 쿼리됩니다.

이 예시에서는 SQL Server 및 AdventureWorks 데이터베이스가 로컬 컴퓨터에 설치된 것으로 가정합니다. 모든 출력은 브라우저에서 예시를 실행할 때 브라우저에 기록됩니다.

<?php  
/* Specify the server and connection string attributes. */  
$serverName = "(local)";  
  
/* Get UID and PWD from application-specific files.  */  
$uid = file_get_contents("C:\AppData\uid.txt");  
$pwd = file_get_contents("C:\AppData\pwd.txt");  
$connectionInfo = array( "UID"=>$uid,  
                         "PWD"=>$pwd,  
                         "Database"=>"AdventureWorks");  
  
/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
if( $conn === false )  
{  
     echo "Unable to connect.</br>";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Query SQL Server for the login of the user accessing the  
database. */  
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";  
$stmt = sqlsrv_query( $conn, $tsql);  
if( $stmt === false )  
{  
     echo "Error in executing query.</br>";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve and display the results of the query. */  
$row = sqlsrv_fetch_array($stmt);  
echo "User login: ".$row[0]."</br>";  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

PDO_SQLSRV 예시

이 샘플에서는 PDO_SQLSRV 드라이버를 사용하여 SQL Server 인증에 연결하는 방법을 보여줍니다.

<?php  
   $serverName = "(local)";   
   $database = "AdventureWorks";  
  
   // Get UID and PWD from application-specific files.   
   $uid = file_get_contents("C:\AppData\uid.txt");  
   $pwd = file_get_contents("C:\AppData\pwd.txt");  
  
   try {  
      $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);   
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
   }  
  
   catch( PDOException $e ) {  
      die( "Error connecting to SQL Server" );   
   }  
  
   echo "Connected to SQL Server\n";  
  
   $query = 'select * from Person.ContactType';   
   $stmt = $conn->query( $query );   
   while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){   
      print_r( $row );   
   }  
  
   // Free statement and connection resources.   
   $stmt = null;   
   $conn = null;   
?>  

참고 항목

방법: SQL Server 인증을 사용하여 연결

Microsoft Drivers for PHP for SQL Server 프로그래밍 가이드

설명서의 코드 예시 정보

SUSER_SNAME(Transact-SQL)

방법: SQL Server 로그인 만들기

방법: 데이터베이스 사용자 만들기

사용자, 역할 및 로그인 관리

사용자 스키마 분리

개체 권한 부여(Transact-SQL)