在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