在SQL Server 2008的數據庫級別創建用戶的目的是什麼。如果展開某些數據庫 - 安全性 - 用戶,並且以這種方式添加用戶,則無法用同一用戶登錄到SQL Server。那麼,在數據庫級別創建用戶的目的是什麼?在數據庫級別創建用戶
3
A
回答
3
登錄和用戶之間有區別。必須先創建一個登錄,然後才能將登錄名作爲用戶添加到數據庫中。
安全性>登錄是可以登錄系統的所有用戶。登錄有一個密碼,至少有公共角色。 SecurityAdmin角色或更高級別的成員可以編輯登錄名。如您所見,securityadmins(及更高版本)可以編輯登錄的精細權限。管理員可以編輯登錄的密碼和數據庫訪問權限。
MyDatabase> Security>用戶擁有該特定數據庫的所有用戶信息,但不允許您編輯登錄權限。
如果您的數據庫上有DBO,但系統上沒有Admin,則只能編輯數據庫上的用戶權限。您無法管理用戶對其他數據庫或其密碼的訪問權限。
添加登錄並將它們分配給數據庫可以用編程方式說明。 一個是securityadmin這樣做:
CREATE LOGIN MyUser WITH PASSWORD = 'MyPassword'
此登錄現在存在於我們的SQL Server實例,但沒有權限,並且沒有任何數據庫的用戶。
將該用戶添加到特定數據庫的數據庫世界所有者將創建該登錄一個用戶:
CREATE USER MyUser FOR LOGIN MyUser
下面是創建登錄的更多高級選項:
if not exists (select * from master.dbo.syslogins where loginname = N'MyUser')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select @logindb = N'master', @loginlang = N'us_english'
if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master.dbo.syslanguages where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
CREATE LOGIN MyUser WITH PASSWORD = 'MyPassword', CHECK_POLICY = OFF
END
GO
這裏有更多的高級選項將用戶添加到數據庫並賦予其db_owner角色:
if not exists (select * from dbo.sysusers where name = N'MyUser' and uid < 16382)
EXEC sp_grantdbaccess N'MyUser', N'MyUser'
GO
exec sp_addrolemember N'db_owner', N'MyUser'
GO
2
必須創建登錄才能訪問SQL實例。登錄可以被授予服務器角色,因此他們可以執行管理安全性或成爲管理員等任務。
登錄被映射到數據庫中的用戶。權限是根據此用戶上的每個數據庫或用戶所屬的角色授予的。
登錄名也可能通過訪客用戶有權訪問數據庫。當然,documentation on this。
相關問題
- 1. 創建用戶在Oracle數據庫
- 2. 如何升級數據庫用戶權限以創建新數據庫?
- 3. 在數據庫中存儲用戶訪問級別
- 4. 在oracle中爲手動創建的用戶創建數據庫
- 5. 如何創建用戶數據庫?
- 6. Postgres用戶創建數據庫
- 7. 用戶創建的數據庫或表
- 8. Heroku PostgreSQL用戶和數據庫創建
- 9. 數據庫創建新訪客用戶
- 10. AWS RDS爲數據庫創建用戶
- 11. 創建用戶後插入數據庫
- 12. 在數據庫級別或應用程序級別上過濾數據
- 13. 在日常構建過程中重建數據庫的級別
- 14. hibernate是否可以創建數據庫和數據庫用戶?
- 15. MSSQL - 爲數據庫創建別名
- 16. 數據庫級別的數據加密
- 17. 在數據庫級別或會話中緩存用戶特定數據
- 18. 在表級別複製postgres數據庫
- 19. 在數據庫級別設置NOCOUNT OFF?
- 20. 通過會話或數據庫檢查用戶組級別?
- 21. 訪問數據庫,用戶級別的保護和vb.net
- 22. 創建數據庫索引Vs用戶爲表創建索引
- 23. 如何在web2py的數據庫級別創建多列唯一約束?
- 24. PHPMYADMIN - 如何讓用戶創建數據庫,但只顯示該用戶創建的數據庫?
- 25. 創建用戶電影評級數組
- 26. oracle是否在數據塊的級別創建分區
- 27. 在SQL Server 2005中使用T-SQL創建數據庫別名
- 28. 在Mongo數據庫實例中爲特定數據庫創建只讀用戶
- 29. 用戶級別
- 30. Firebase在創建帳戶時創建額外的用戶數據
好的,在此考試中我可以使用MyUser登錄登錄到SQL服務器,但是在數據庫xy上,我將把權限分配給用戶MyUser? – user2457382
是的,有點。第二個代碼塊將用戶添加到數據庫xy,但它還沒有權限。我希望CREATE USER FOR LOGIN能說明你不得不把登錄名作爲用戶添加到數據庫xy中。 – BClaydon