Hướng dẫn php connect to sql server windows authentication - php kết nối với xác thực cửa sổ máy chủ sql

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Cách làm: Kết nối bằng cách sử dụng Xác thực Windows

  • Bài báo
  • 18/11/2022
  • 2 phút để đọc

Trong bài viết này

Hướng dẫn php connect to sql server windows authentication - php kết nối với xác thực cửa sổ máy chủ sql
Tải xuống trình điều khiển PHP

Theo mặc định, trình điều khiển Microsoft cho PHP cho SQL Server sử dụng xác thực Windows để kết nối với SQL Server. Điều quan trọng cần lưu ý là trong hầu hết các tình huống, điều này có nghĩa là nhận dạng quy trình hoặc nhận dạng luồng của máy chủ web (nếu máy chủ web đang sử dụng mạo danh) được sử dụng để kết nối với máy chủ, chứ không phải danh tính của người dùng cuối.

Các điểm sau phải được xem xét khi bạn sử dụng xác thực Windows để kết nối với SQL Server:

  • Thông tin đăng nhập trong đó quy trình (hoặc luồng) của máy chủ web đang chạy phải ánh xạ tới đăng nhập SQL Server hợp lệ để thiết lập kết nối.

  • Nếu SQL Server và máy chủ web có trên các máy tính khác nhau, SQL Server phải được cấu hình để bật các kết nối từ xa.

Ghi chú

Các thuộc tính kết nối như cơ sở dữ liệu và kết nối có thể được đặt khi bạn thiết lập kết nối. Để biết danh sách đầy đủ các thuộc tính kết nối được hỗ trợ, hãy xem các tùy chọn kết nối.

Xác thực Windows nên được sử dụng để kết nối với SQL Server bất cứ khi nào có thể vì những lý do sau:

  • Không có thông tin đăng nhập được truyền qua mạng trong quá trình xác thực; Tên người dùng và mật khẩu không được nhúng trong chuỗi kết nối cơ sở dữ liệu. Điều này có nghĩa là người dùng hoặc kẻ tấn công độc hại không thể có được thông tin đăng nhập bằng cách giám sát mạng hoặc bằng cách xem các chuỗi kết nối bên trong các tệp cấu hình.

  • Người dùng phải chịu quản lý tài khoản tập trung; Các chính sách bảo mật như thời gian hết hạn mật khẩu, độ dài mật khẩu tối thiểu và khóa tài khoản sau khi nhiều yêu cầu đăng nhập không hợp lệ được thực thi.

Nếu xác thực Windows không phải là một tùy chọn thực tế, hãy xem cách: Kết nối bằng Xác thực SQL Server.

Ví dụ SQLSRV

Sử dụng trình điều khiển SQLSRV của trình điều khiển Microsoft cho PHP cho SQL Server, ví dụ sau sử dụng xác thực Windows để kết nối với phiên bản cục bộ của SQL Server. Sau khi kết nối đã được thiết lập, máy chủ được truy vấn để đăng nhập của người dùng đang truy cập cơ sở dữ liệu.

Ví dụ giả định rằng SQL Server và cơ sở dữ liệu AdventureWorks được cài đặt trên máy tính cục bộ. Tất cả đầu ra được ghi vào trình duyệt khi ví dụ được chạy từ trình duyệt.

"AdventureWorks");  
  
/* Connect using Windows Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
if( $conn === false )  
{  
     echo "Unable to connect.
"; 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.
"; die( print_r( sqlsrv_errors(), true)); } /* Retrieve and display the results of the query. */ $row = sqlsrv_fetch_array($stmt); echo "User login: ".$row[0]."
"; /* Free statement and connection resources. */ sqlsrv_free_stmt( $stmt); sqlsrv_close( $conn); ?>

Ví dụ PDO_SQLSRV

Ví dụ sau sử dụng trình điều khiển PDO_SQLSRV để hoàn thành cùng một nhiệm vụ với mẫu trước.

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 );   
}  
?>  

Xem thêm

Cách làm: Kết nối bằng Xác thực SQL Server

Hướng dẫn lập trình cho Trình điều khiển Microsoft cho PHP cho SQL Server

Về các ví dụ mã trong tài liệu

Cách để: Tạo đăng nhập SQL Server

Cách sử dụng: Tạo người dùng cơ sở dữ liệu

Quản lý người dùng, vai trò và đăng nhập

Tách người dùng-Schema

Cấp quyền đối tượng (Transact-SQL)

Nhận xét

Gửi và xem phản hồi cho

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Cách làm: Kết nối bằng Xác thực SQL Server

  • Bài báo
  • 18/11/2022
  • 3 phút để đọc

Trong bài viết này

Tải xuống trình điều khiển PHP

Trình điều khiển Microsoft cho PHP cho SQL Server hỗ trợ xác thực SQL Server khi bạn kết nối với SQL Server.

Xác thực máy chủ SQL chỉ nên được sử dụng khi xác thực Windows là không thể. Để biết thông tin về việc kết nối với xác thực Windows, xem Cách: Kết nối bằng Xác thực Windows.

Các điểm sau phải được xem xét khi bạn sử dụng xác thực SQL Server để kết nối với SQL Server:

  • Xác thực chế độ hỗn hợp SQL Server phải được bật trên máy chủ.

  • ID người dùng và mật khẩu (thuộc tính kết nối UID và PWD trong trình điều khiển SQLSRV) phải được đặt khi bạn cố gắng thiết lập kết nối. ID người dùng và mật khẩu phải ánh xạ tới người dùng và mật khẩu SQL Server hợp lệ.

Ghi chú

Mật khẩu có chứa nẹp xoăn đóng (}) phải được thoát ra với một nẹp xoăn đóng lần thứ hai. Ví dụ: nếu mật khẩu SQL Server là "Pass} word", giá trị của thuộc tính kết nối PWD phải được đặt thành "Pass}} word".

Các biện pháp phòng ngừa sau đây phải được thực hiện khi bạn sử dụng xác thực SQL Server để kết nối với SQL Server:

  • Bảo vệ (mã hóa) Thông tin đăng nhập được chuyển qua mạng từ máy chủ web sang cơ sở dữ liệu. Thông tin đăng nhập được mã hóa theo mặc định bắt đầu trong SQL Server 2005. Để thêm bảo mật, hãy đặt thuộc tính kết nối mã hóa thành "BẬT" để mã hóa tất cả dữ liệu được gửi đến máy chủ.

Ghi chú

Đặt thuộc tính kết nối mã hóa thành "BẬT" có thể gây ra hiệu suất chậm hơn vì mã hóa dữ liệu có thể được tính toán chuyên sâu.

  • Không bao gồm các giá trị cho các thuộc tính kết nối UID và PWD trong văn bản thuần túy trong các tập lệnh PHP. Các giá trị này nên được lưu trữ trong một thư mục dành riêng cho ứng dụng với các quyền hạn chế thích hợp.

  • Tránh sử dụng tài khoản SA. Ánh xạ ứng dụng cho người dùng cơ sở dữ liệu có các đặc quyền mong muốn và sử dụng mật khẩu mạnh.

Ghi chú

Mật khẩu có chứa nẹp xoăn đóng (}) phải được thoát ra với một nẹp xoăn đóng lần thứ hai. Ví dụ: nếu mật khẩu SQL Server là "Pass} word", giá trị của thuộc tính kết nối PWD phải được đặt thành "Pass}} word".

Các biện pháp phòng ngừa sau đây phải được thực hiện khi bạn sử dụng xác thực SQL Server để kết nối với SQL Server:

Bảo vệ (mã hóa) Thông tin đăng nhập được chuyển qua mạng từ máy chủ web sang cơ sở dữ liệu. Thông tin đăng nhập được mã hóa theo mặc định bắt đầu trong SQL Server 2005. Để thêm bảo mật, hãy đặt thuộc tính kết nối mã hóa thành "BẬT" để mã hóa tất cả dữ liệu được gửi đến máy chủ.

Ghi chú

$uid,  
                         "PWD"=>$pwd,  
                         "Database"=>"AdventureWorks");  
  
/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
if( $conn === false )  
{  
     echo "Unable to connect.
"; 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.
"; die( print_r( sqlsrv_errors(), true)); } /* Retrieve and display the results of the query. */ $row = sqlsrv_fetch_array($stmt); echo "User login: ".$row[0]."
"; /* Free statement and connection resources. */ sqlsrv_free_stmt( $stmt); sqlsrv_close( $conn); ?>

Đặt thuộc tính kết nối mã hóa thành "BẬT" có thể gây ra hiệu suất chậm hơn vì mã hóa dữ liệu có thể được tính toán chuyên sâu.

Không bao gồm các giá trị cho các thuộc tính kết nối UID và PWD trong văn bản thuần túy trong các tập lệnh PHP. Các giá trị này nên được lưu trữ trong một thư mục dành riêng cho ứng dụng với các quyền hạn chế thích hợp.

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;   
?>  

Tránh sử dụng tài khoản SA. Ánh xạ ứng dụng cho người dùng cơ sở dữ liệu có các đặc quyền mong muốn và sử dụng mật khẩu mạnh.

Cách làm: Kết nối bằng Xác thực SQL Server

Bài báo

18/11/2022

3 phút để đọc

Trong bài viết này

Tải xuống trình điều khiển PHP

Trình điều khiển Microsoft cho PHP cho SQL Server hỗ trợ xác thực SQL Server khi bạn kết nối với SQL Server.

Xác thực máy chủ SQL chỉ nên được sử dụng khi xác thực Windows là không thể. Để biết thông tin về việc kết nối với xác thực Windows, xem Cách: Kết nối bằng Xác thực Windows.

Các điểm sau phải được xem xét khi bạn sử dụng xác thực SQL Server để kết nối với SQL Server:

Xác thực chế độ hỗn hợp SQL Server phải được bật trên máy chủ.

ID người dùng và mật khẩu (thuộc tính kết nối UID và PWD trong trình điều khiển SQLSRV) phải được đặt khi bạn cố gắng thiết lập kết nối. ID người dùng và mật khẩu phải ánh xạ tới người dùng và mật khẩu SQL Server hợp lệ.

Đăng nhập SQL Server có thể sử dụng Xác thực Windows không?

SQL Server hỗ trợ hai chế độ xác thực, chế độ xác thực Windows và chế độ hỗn hợp. Xác thực Windows là mặc định và thường được gọi là bảo mật tích hợp vì mô hình bảo mật SQL Server này được tích hợp chặt chẽ với Windows.. Windows authentication is the default, and is often referred to as integrated security because this SQL Server security model is tightly integrated with Windows.

Không thể kết nối với SQL Server bằng Xác thực Windows?

Vấn đề này nên được giải quyết bằng cách làm theo các bước dưới đây ...
Mở studio quản lý máy chủ SQL của bạn ..
Nhấp chuột phải vào máy chủ cơ sở dữ liệu và đi đến các thuộc tính ..
Chọn tùy chọn bảo mật và kiểm tra "Chế độ xác thực SQL Server và Windows" ..
Bật kết nối TCP/IP trong Trình quản lý cấu hình SQL ..
Khởi động lại máy chủ SQL của bạn ..

Tôi có thể kết nối SQL Server PHP không?

Trình điều khiển Microsoft cho PHP cho SQL Server có thể kết nối với SQL Server bằng cách sử dụng xác thực Windows hoặc bằng cách sử dụng xác thực SQL Server.Theo mặc định, trình điều khiển Microsoft cho PHP cho SQL Server, hãy cố gắng kết nối với máy chủ bằng cách sử dụng xác thực Windows.. By default, the Microsoft Drivers for PHP for SQL Server try to connect to the server by using Windows Authentication.

Làm thế nào để xác thực Windows hoạt động trong SQL Server?

Một kết nối được thực hiện bằng cách sử dụng xác thực Windows đôi khi được gọi là kết nối đáng tin cậy, bởi vì SQL Server tin tưởng vào thông tin đăng nhập do Windows cung cấp.Bằng cách sử dụng xác thực Windows, các nhóm Windows có thể được tạo ở cấp độ miền và đăng nhập có thể được tạo trên SQL Server cho toàn bộ nhóm.