这两天在调用Microsoft.SqlServer.SMO.dll组件 《add login,create,backup,restore database to Sql Server using SMO》,接触到一些数据库的名词定义: 登录名,用户,角色,架构,权限 ,部分新人对几个名词的概念不是很清晰 所以参考部分文档,摘录如下(权当
这两天在调用Microsoft.SqlServer.SMO.dll组件 《add login,create,backup,restore database to Sql Server using SMO》,接触到一些数据库的名词定义:登录名,用户,角色,架构,权限,部分新人对几个名词的概念不是很清晰 所以参考部分文档,摘录如下(权当温故⑧^_^):
SqlServer2008的安全机制分为四个级别:
1.操作系统的安全性
创建操作系统用户账号(win7):
2.数据库服务器的登录安全性【下面两种验证模式下登录所使用的用户名,即为:登录名定义。】
数据库服务器登录模式分为:
①Windows身份验证模式(如下图)
用户名即是:当前Windows操作系统中的用户账户,我这里是用的管理员账号(计算机名),如果系统账户有登录密码 可以相应的输入
登录成功后,设置SqlServer 验证模式如图:
②混合身份验证模式(Windows身份验证模式&SqlServer身份验证模式[前者安全性比后者高]),如下图:
在安装SQLServer2008时 会默认生成一个登录名:sa,其隶属于服务器角色:sysadmin。
而新创建的登录名,则会自动关联服务器角色:public,除了默认的数据库:master,美国服务器,其他的数据都将没有访问权限,如果想要访问其他数据库:
1.则需要在登录名-新建-用户映射里面勾选相应的数据库:则相应的数据库会自动创建一个同名(登录名)数据库用户账号
(注①:master数据库不勾选也是默认访问的 数据库用户里是没有同名账号。)
(注②:当登录名要删除之前 要先手动删除由登录名映射数据库而生成的用户)
2.或者在登录名-新建-服务器角色 中直接勾选sysadmin这样就可以访问所有的数据库(或在服务器角色sysadmin-右击属性-添加-登录名)了:修改服务器角色为 sysadmin 不会在数据库用户里创建同名账号。
以下是数据库服务器的角色列表以及其对应所拥有的操作权限,如下图:
3.数据库的使用安全性
登录名 只能登录进SqlServer服务器,并不能让访问服务器中的数据库,而使用登录名登录进数据库服务器后想要访问特定的数据库 还必须具有数据库用户名,用户名在特定的数据库内创建,并必须关联一个登录名,通过授权给该用户指定可以访问的数据库对象的权限
数据库用户可以新建或者由登录名映射数据库而生成。注:无论是新建的数据库用户 还是由登录名映射数据库生成的数据库用户 都要遵循 数据库用户1:1登录名的规则
创建数据库用户时 需要关联登录名;创建数据库角色是 需要关联使用者 一般选择dbo; dbo(DataBase Owner)是数据库的所有者,拥有数据库中的所有对象,每个数据库都有dbo,sysadmin服务器角色的成员自动映射成dbo,无法删除dbo,且此用户始终出现在每个数据库中。通常 登录名sa映射为数据库用户dbo.
数据库用户的生成需要关联数据库角色:数据库角色有三种:固定数据库角色,用户定义数据库角色,应用程序角色,如下图:
4.数据库对象的使用安全性
我们一般将表,视图,存储过程,函数 统称为数据库对象,而数据库对象包含在架构中,而给角色划分权限也就是开放架构中部分或者全部的对象做相应的执行权限操作,
数据库对象的常用权限 如下图:
权限操作分为三种:授予,拒绝,撤销,语法及代码如下
权限操作
students ,inster, stu 8 to students_msg students , stu students stu stu 29 to guest ,美国服务器,美国服务器