Sự khác biệt giữa Người dùng và Đăng nhập trong SQL Server


178

Gần đây tôi đã chạy vào nhiều khu vực khác nhau của SQL Server mà tôi thường không gặp rắc 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ư đó là một chủ đề khá đơn giản ...

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

Đă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à tại sao thậm chí có một đăng nhập và người dùng? họ dường như là khá nhiều trong cùng một. Sự khác biệt là gì, hoặc dường như tôi đang thiếu gì?

Câu trả lời:


202

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

"Người dùng" cấp một mục đăng nhập vào một cơ sở dữ liệu duy nhất.

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

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


7
Không có gì ngạc nhiên khi 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

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

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

Nhưng bây giờ MSDN đề xuất một loại người dùng "Người dùng xác thực tại cơ sở dữ liệu" (Được khuyến nghị để giúp cơ sở dữ liệu của bạn dễ di chuyển hơn). Liên kết: docs.microsoft.com/en-us/sql/t-sql/statements/. Điều này có tốt hơn loại người dùng truyền thống không?
Sheen

32

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ể nằm trong phạm vi cơ sở dữ liệu. Theo 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ể ánh xạ lại mối quan hệ đăng nhập người dùng 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.


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

Nói rằng 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 phải thay đổi cơ sở dữ liệu trong khôi phục.
Tom Resing

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

1
Có một video 60 giây hay về chủ đề tại SQLAuthority để biết thêm thông tin blog.sqlauthority.com/2014/07/16/ gợi
Tom Resing

1
@HeyJude Có nghĩa là máy chủ có liên quan đến Xác thực một cái gì đó mà cơ sở dữ liệu sẽ phải làm nếu không phải để đăng nhập và tách người dùng.
Zaid Khan

25

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

Điều quan trọng đầu tiên cần được hiểu về bảo mật SQL Server là có hai lĩnh vực bảo mật liên quan - máy chủ và cơ sở dữ liệu. Cõi máy chủ bao gồm nhiều cõi cơ sở dữ liệu. Tất cả cá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 để thực hiện công việc, trước tiên người ta 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.

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

Nhưng đăng nhập là không đủ, bởi 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 lĩnh vực riêng biệt. Truy cập vào cơ sở dữ liệu được cấp thông 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. Đăng nhập ánh xạ tới người dùng trong cơ sở dữ liệu nếu giá trị SID của họ giống hệt nhau. Do đó, tùy thuộc vào loại đăng nhập, do đó chúng tôi có thể có một 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 của người dùng Windows và người dùng được ánh xạ tới thông tin đăng nhập nhóm Windows.

Chúng ta hãy lùi lại một bước để có cái nhìn tổng quan nhanh: đăng nhập cung cấp quyền truy cập vào máy chủ và để tiếp tục truy cập vào cơ sở dữ liệu, người dùng được ánh xạ tới thông tin đăng nhập phải tồn tại trong cơ sở dữ liệu.

đó là liên kết đến bài viết đầy đủ.


Bài đăng trên blog này đã bị gỡ xuống :(
Steven Schlansker

23

Nói ngắn gọn,

Đăng nhập 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.


6

Tôi nghĩ rằng đây là một câu hỏi rất hữu ích với câu trả lời tốt. Chỉ cần thêm hai xu của tôi từ MSDN Tạo trang Đăng nhập :

Đăng nhập là một hiệu trưởng bảo mật hoặc một thực thể có thể được xác thực bởi một 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 thông tin đăng nhập dựa trên hiệu trưởng Windows (chẳng hạn như người dùng miền hoặc nhóm miền Windows) hoặc bạn có thể tạo thông tin đăng nhập không dựa trên hiệu trưởng 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 Chế độ xác thực.

Là hiệu trưởng bảo mật, quyền có thể được cấp để đăng nhập. Phạm vi đăng nhập là toàn bộ Cơ sở dữ liệu. Để kết nối với cơ sở dữ liệu cụ thể trên phiên bản SQL Server, thông tin đăng nhập phải được ánh xạ tới 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 đăng nhập. Các quyền có phạm vi của toàn bộ phiên bản SQL Server (ví dụ: quyền CREATE ENDPOINT) có thể được cấp cho đăng nhập.


3
Sẽ rõ ràng hơn một chút nếu bạn đặt >ở đầu mỗi đoạn trong đoạn trích dẫn để nó được định dạng như một trích dẫn.
Sam

2
Đ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 thông tin đăng nhập Máy chủ SQL khi máy chủ không cho phép họ đăng nhập nằm ngoài tôi!
Đánh dấu Ireland

Tôi đã bị bối rối bởi điều này là tốt. nếu máy chủ hiện không ở chế độ hỗn hợp thì tôi đã dự kiến ​​máy chủ sẽ gặp lỗi trong khi cố gắng tạo thông tin đăng nhập SQL Auth, điều đó ít nhất sẽ cung cấp cho người dùng một đầu mối chỉ ra rằng trước tiên họ nên bật xác thực chế độ hỗn hợp.
arunun

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.