Sql-Server

SQL Server 中的混淆登錄名和使用者

  • April 17, 2016

在 SQL Server 中,當使用 Grant 語句設置權限時,我們對使用者進行設置,而不是登錄。例如:

CREATE LOGIN login1 WITH PASSWORD = 'sssssssss';
use mydb;
CREATE USER user1 FOR LOGIN login1
grant delete on table1 to user1

因此,使用者可能會也可能不會在某個表上執行某個任務。但是,當從 JDBC 等連接到數據庫時,我們在連接字元串中提供登錄名和密碼(此處為 login1 和 ‘sssssssss’) ,而不是使用者名!

那麼這些贈款聲明在哪裡顯示呢?我們從未在程式碼中提及 User1!並且,如果我們為同一個登錄定義兩個使用者,每個使用者具有不同的權限,然後從 JDBC 連接到數據庫,這些使用者權限中的哪一個被考慮?

我不太確定我是否清楚地理解了您的問題,所以請多多包涵關於登錄和使用者的問題。

在您的情況下,它似乎是 SQL Server 登錄而不是 Active Directory 帳戶,但它們在伺服器和數據庫中的行為基本相同。

此外,對於它的價值,您的問題似乎缺少一些步驟或步驟。總體來說沒什麼大不了的。

登錄:(伺服器級別)

您可以創建登錄Login1,它的 SID 為0x14151617181920212223242526099097並授予它一些權限。這些權限屬於登錄。

使用者:(數據庫級別)

當您為Login1創建****User1時,使用者繼承了相同的 SID 。0x14151617181920212223242526099097

因此,在您的數據庫中,伺服器登錄Login1實際上由數據庫使用者User1執行,因此使用者獲得了權限。

因為,如您所見,兩者實際上是同一個帳戶。使用者的名稱在執行方面絕對沒有意義。重要的是 SID。

引用自:https://dba.stackexchange.com/questions/135511