2009-07-15 63 views
138

Tôi gần đây đã chạy vào nhiều khu vực khác nhau của SQL Server mà tôi thường không gây rối. Một trong số đó khiến tôi bối rối là khu vực Đăng nhập và Người dùng. Có vẻ như nó phải là một chủ đề khá đơn giản ...Sự khác biệt giữa người dùng và đăng nhập trong SQL Server

Dường như mỗi thông tin đăng nhập chỉ có thể có 1 người dùng và mỗi người dùng chỉ có thể có 1 thông tin đăng nhập.

Thông tin đăng nhập có thể được liên kết với nhiều bảng do đó liên kết người dùng đó với nhiều bảng.

Vì vậy, câu hỏi của tôi là lý do tại sao thậm chí có thông tin đăng nhập và người dùng? họ có vẻ là một trong rất nhiều trong cùng một. Sự khác biệt là gì, hoặc tôi dường như bị thiếu sót gì?

Trả lời

162

"Đăng nhập" cấp cho mục nhập chính vào SERVER.

"Người dùng" cấp một mục nhập đăng nhập vào một DATABASE duy nhất.

Một "Đăng nhập" có thể được liên kết với nhiều người dùng (mỗi người dùng một cơ sở dữ liệu).

Mỗi đối tượng trên có thể được cấp quyền ở cấp độ riêng. Xem các bài viết sau đây để giải thích về từng

+6

Ah không có thắc mắc tôi không thể tìm thấy một sự khác biệt. Tôi chỉ đơn giản là làm việc với 1 cơ sở dữ liệu. cảm ơn. – corymathews

+1

Câu trả lời này về cơ bản là chính xác, nhưng khi tôi hiểu rằng một người dùng cụ thể có thể được cấp quyền truy cập vào nhiều hơn một cơ sở dữ liệu có sẵn trên máy chủ cụ thể đó. Vì vậy, đăng nhập-người dùng là một bản đồ 1-đến-1, nhưng cơ sở dữ liệu người dùng là một ánh xạ từ 1 đến nhiều. –

+0

@coreymathews: Ít thời gian hơn trong "Boy Meets World" và dành nhiều thời gian hơn cho sách! ;). – MSIS

25

Một lý do để có cả hai là để xác thực có thể được thực hiện bởi máy chủ cơ sở dữ liệu, nhưng ủy quyền có thể được scoped vào cơ sở dữ liệu. Bằng cách đó, nếu bạn di chuyển cơ sở dữ liệu của mình sang một máy chủ khác, bạn luôn có thể remap mối quan hệ người dùng-đăng nhập trên máy chủ cơ sở dữ liệu, nhưng cơ sở dữ liệu của bạn không phải thay đổi.

+0

Bạn có thể vui lòng xây dựng? Lợi thế của thay đổi đang được thực hiện trên máy chủ cơ sở dữ liệu thay vì trên cơ sở dữ liệu là gì? – HeyJude

+0

Giả sử bạn muốn sao lưu và khôi phục cơ sở dữ liệu. Việc khôi phục thường được thực hiện trên một máy chủ mới. Bạn có thể không muốn thay đổi cơ sở dữ liệu trong quá trình khôi phục. –

+0

Tại sao không chỉ thực hiện thay đổi sau khi cơ sở dữ liệu đã được khôi phục? – HeyJude

18

Trong ngắn,

Logins sẽ có quyền truy cập của máy chủ.

Người dùng sẽ có quyền truy cập cơ sở dữ liệu.

5

Tôi nghĩ đây là một câu hỏi rất hữu ích với câu trả lời hay. Chỉ cần thêm hai xu của tôi từ trang MSDN Create a Login:

Đăng nhập là một nhân viên bảo mật hoặc một thực thể có thể được xác thực bởi hệ thống an toàn. Người dùng cần đăng nhập để kết nối với SQL Server. Bạn có thể tạo một đăng nhập dựa trên một Windows chính (chẳng hạn như một người dùng tên miền hoặc một nhóm miền Windows) hoặc bạn có thể tạo một đăng nhập không dựa trên một chính Windows (chẳng hạn như đăng nhập SQL Server).

Lưu ý:
Để sử dụng Xác thực máy chủ SQL, Công cụ cơ sở dữ liệu phải sử dụng xác thực chế độ hỗn hợp. Để biết thêm thông tin, hãy xem Chọn một Chế độ xác thực.

Là nhân viên bảo mật, quyền có thể được cấp cho thông tin đăng nhập. Phạm vi đăng nhập là toàn bộ Cơ sở dữ liệu. Để kết nối với một cơ sở dữ liệu cụ thể trên cá thể của SQL Server, một đăng nhập phải được ánh xạ tới một người dùng cơ sở dữ liệu. Quyền bên trong cơ sở dữ liệu được cấp và từ chối cho người dùng cơ sở dữ liệu, không phải là thông tin đăng nhập.Các quyền có phạm vi toàn bộ cá thể của SQL Server (ví dụ, quyền CREATE ENDPOINT) có thể được cấp cho một đăng nhập.

+3

Đó là một chút rõ ràng hơn nếu bạn đặt một '>' ở đầu mỗi đoạn trong báo giá để nó được định dạng như một báo giá. – Sam

+1

Cảm ơn bạn đã đề xuất Sam – ilmatte

+0

Điều này rất hữu ích. Mặc dù tôi đã thiết lập người dùng và đăng nhập chính xác, hệ thống không được thiết lập để cho phép xác thực đăng nhập SQL Server. Tại sao tôi có thể tạo đăng nhập SQL Server khi máy chủ sẽ không cho phép họ đăng nhập vượt quá tôi! –

15

Tôi nghĩ rằng có một thực sự tốt MSDN blog post về chủ đề này bằng cách Laurentiu Cristofor:

Điều quan trọng đầu tiên mà cần phải được hiểu về SQL Server an ninh là có hai cõi an ninh có liên quan - máy chủ và cơ sở dữ liệu. Cõi máy chủ bao gồm nhiều cơ sở dữ liệu cõi. Tất cả công việc được thực hiện trong bối cảnh của một số cơ sở dữ liệu, nhưng để có được để thực hiện công việc, trước tiên, bạn cần có quyền truy cập vào máy chủ và sau đó để có quyền truy cập vào cơ sở dữ liệu.

Quyền truy cập vào máy chủ được cấp thông qua thông tin đăng nhập. Có hai loại đăng nhập chính : thông tin đăng nhập SQL Server được xác thực và Windows thông tin đăng nhập được xác thực. Tôi thường sẽ đề cập đến những điều này bằng cách sử dụng tên ngắn hơn tên đăng nhập SQL và thông tin đăng nhập Windows. Các thông tin đăng nhập được xác thực của Windows có thể là thông tin đăng nhập được ánh xạ tới người dùng Windows hoặc thông tin đăng nhập được ánh xạ tới Nhóm Windows. Vì vậy, để có thể kết nối với máy chủ, người dùng phải có quyền truy cập qua một trong các loại này hoặc thông tin đăng nhập - thông tin đăng nhập cung cấp quyền truy cập vào lĩnh vực máy chủ .

Nhưng thông tin đăng nhập không đủ, vì công việc thường được thực hiện trong cơ sở dữ liệu và cơ sở dữ liệu là các cõi riêng biệt. Truy cập vào cơ sở dữ liệu được cấp qua người dùng.

Người dùng được ánh xạ tới thông tin đăng nhập và ánh xạ được thể hiện bằng thuộc tính SID của thông tin đăng nhập và người dùng. Bản đồ đăng nhập cho người dùng trong cơ sở dữ liệu nếu giá trị SID của họ giống hệt nhau. Tùy thuộc vào loại đăng nhập, chúng tôi có thể do đó có phân loại người dùng bắt chước phân loại ở trên để đăng nhập; vì vậy, chúng tôi có người dùng SQL và người dùng Windows và danh mục sau bao gồm người dùng được ánh xạ tới thông tin đăng nhập người dùng Windows và người dùng được ánh xạ tới thông tin đăng nhập nhóm Windows.

Hãy lùi lại một bước cho một cái nhìn tổng quát: a login cung cấp truy cập đến máy chủ và tiếp tục được tiếp cận với một cơ sở dữ liệu, người dùng ánh xạ để đăng nhập phải tồn tại trong cơ sở dữ liệu.

that's the link cho toàn bộ bài đăng.

Các vấn đề liên quan