连接数据库服务器
第一节 用户权限说明
这里我们简要介绍数据库的安全性,其主要目的是我们能够登录到数据库服务器上开始建立我们的数据库。
  所谓数据库的安全性是指必须保证具有数据访问权限的用户登录到SQL Server,并且能够访问到相应的数据和对相应的数据对象进行合理操作。SQL Server的安全构架比较复杂,需要数据库系统管理员、操作系统管理员、网络管理员进行共同管理,建立一个安全可靠的数据库环境。
  用户登录:使用用户登录,SQL Server就能够识别授权用户。
  数据库权限:权限管理和许可权限是一件事情。所谓数据库权限是指定授权可以使用的数据库对象和这些授权用户可以对这些数据库对象所进行的操作。
  角:一个角能够把使用者组合为单一的整体,并且对这一组使用者赋予相同的权限。使用角,SQL Server管理者可以把一组用户设置为某一个角,只要对角进行权限管理也就可以对全组用户进行权限管理。
  一、用户登录
  身份验证模式 :
   ·Windows身份验证
    ·混合认证模式
  登录帐户:是用于连接到SQL Server的帐户。
  用户帐户 :是数据库中的帐户,每一个数据库都有一套自己的用户帐户。只有拥有了用户帐户才能访问数据库。
  登录帐户和用户帐户之间的区别是我们理解这些问题的关键。下面看一下这两者之间的区别。
  登录帐户只是通过了Windows NT或者SQL Server认证。SQL Server提供了三个缺省登录帐户:sa(system administrator)、administrators/builtin、guest。用户帐户是基于数据库的,两个不同的数据库可以有相同的用户帐户。一个登录帐户与一个或者多个用户帐户相对应。登录帐户sa自动对应数据库中的用户帐户dbo。
  二、数据库权限
  数据库权限用于控制数据库对象的访问。数据库权限分为:语句权限、对象权限。
  语句权限也称为服务器权限,这些权限包括:Create table、Create database、Backup database、Create index等。一般语句权限只用于授予数据库系统管理员。
  对象权限:对象权限是授予用户访问数据库对象的某一类权限。数据库对象包括:表、视图、存储过程、触发器等。对象权限是指定某一类操作,例如:查询、修改、插入、删除等(select, update, insert, delete)。
  三、角
角是为特定工作组、作业分类或者作业任务而设置的。用户帐户根据对数据库所执行的工作成为一个或者多个数据库角的成员。
  SQL Server支持三种类型角:固定服务器角、固定数据库角、用户自定义角。
  1、固定服务器角:固定服务器角是定义在服务器级别上的。固定服务器角有:
   -sysadmin:执行SQL Server中任何操作
   -setupadmin:安装和复制扩展过程
   -securityadmin:管理登录和建立数据库的准备工作
   -serveradmin:配置服务器设置
   -diskadmin:磁盘空间管理
   -dbcreator:创建和修改数据库
   -processadmin:管理SQL Server进程
  2、固定数据库角:固定数据库角定义在数据库级别上,存在于数据库中,也属于数据库服务器。固定数据库角有:
   -db_owner 执行数据库中所有操作的用户
   -db_accessadmin 增加、删除用户的用户
   -db_datareader 查看所有数据库用户表中数据的用户
      -db _ddladmin 在数据库中执行DDL操作的用户
   -db_securityadmin 执行数据库中所有有关安全权限操作的用户
   -db_backupoperator 备份数据库的用户
   -db_denydatareader 不能查看数据库中数据的用户
   -db_denydatawriter 不能改变数据库中数据的用户
  在固定数据库角中有两个特殊的角:
   -dbo:dbo是一个特殊用户,它与固定服务器角 sysadmin(在服务器中可以执行任何操作)和固定数据库角db_owner(在数据库中可以执行任何操作)有密切联系。每一个数据库只能有一个dbo,dbo是不能被删除的。
   -public:public是一个特殊用户,它表示每一个合法的数据库用户。每一个数据库只能有一个public,并且不能被删除。
  3、用户自定义角:用户自定义角是一组用户,这些用户具有相同的许可权限。如果有一组用户要在SQL Server中执行一组操作,但是没有对应的Windows NT组,或者没有管理Windows NT组的权限,则要建立用户自定义角。一般情况下,不需要建立用户自定义角。
  例子练习:
  ·使用混合验证模式
  ·以administrator登录Windows 2000
  ·以登录帐户sa进入SQL Server
    ·建立一个新的登录帐户cmrsql,密码cmrsql
  ·授予cmrsql不同角,可以看出cmrsql会具有不同权限
sql连接不上服务器
第二节 管理用户登录
一、建立SQL Server 登录
  1、使用【企业管理器】
  2、使用SQL语句建立登录
  使用下列存储过程能够建立登录:
   ·sp_addlogin:把经过SQL Server验证身份的登录帐户添加到数据库中。
   ·sp_grantlogin:把经过Windows验证身份的登录用户添加到数据库中。
  sp_addlogin的用法:
  sp_addlogin [ @loginame= ] ’<登录名>’
  [, [ @passwd = ] ’<密码>’ ]
  [, [ @defdb= ] ’<数据库名>’ ]
  [, [ @deflanguage = ] ’<语言>’ ]
  [, [ @sid = ] ’<标识号>’ ]
  [, [ @encryptopt = ] ’<加密标志>’ ]
  例子:
  建立一个名为cmrsql8、密码为cmrsql8、缺省数据库为pubs 的登录帐户,在【查询分析器】中使用下列命令:
  exec sp_addlogin @loginame=’cmrsql8’,
  @passwd=’cmrsql8’ ,
  @defdb= ’pubs’
  sp_grantlogin的用法:
  sp_grantlogin ‘<登录名称>’
  这里的<登录名称>格式为‘系统名称\登录帐户’。
  例如,exec sp_grantlogin ‘cmr\cmrsujun’
  cmrsujun必须是Windows NT的认证用户。
  3、使用【登录向导】
  二、建立SQL Server用户
  1、使用【企业管理器】
  2、使用SQL语句建立用户
   ·sp_adduser存储过程建立数据库用户。
   ·sp_ adduser [ @loginame= ] ’<登录名>’
  [, [ @name_in_db = ] ’<用户名>’ ]
  [, [ @grpname= ] ’<组名>’ ]
  sp_adduser的例子:
  exec sp_adduser ’cmr\cmrsujun’ ,‘teacher’
  这个命令建立一个Windows NT帐号为cmr\cmrsujun、数据库用户帐户为teacher。
  sp_adduser的例子:
  exec sp_adduser ’cmrsql’ ,‘zhangsan’
  这个命令建立一个登录帐户为cmrsql、数据库用户帐户为zhangsan。
第三节 管理数据库权限
一、授予权限(GRANT
  授予对象权限
  这里我们以对于前面所建立的pubs数据库用户zhangsan授予查询authors表的权限为例,来说明授予对象权限的操作过程。
   ·使用【企业管理器】
   ·SQL语句
  GRANT { ALL | <权限>}
         [ ON <表名> ( <列名>… )]
  TO <安全帐户>
   [ WITH GRANT OPTION]
   [ AS <组名> | <角>]
  例如:
    grant select
    on authors(au_fname,au_lname,address)
    to zhangsan
    with grant option
  例子,授予数据库pubs的zhangsan用户拥有对表authors中address、au_fname、au_lna
med的查询权限,执行下列语句:
    grant select
    on authors(au_fname,au_lname,address)
    to zhangsan
  2、授予语句权限
   ·backup database
   ·backup log
   ·create database
   ·create default
   ·create rule
   ·create table
   ·create view
  授予语句权限:
   ·使用【企业管理器】
   ·SQL语句
  GRANT { ALL | <语句>}
  TO <安全帐户>
  例子,允许数据库用户zhangsan在pubs中建立表,执行下列语句:
  grant create table
  to zhangsan
  二、回收权限
1、回收对象权限
  ·回收权限是禁止用户使用某一个对象权限或语句权限。
  ·缺省情况下,只有下列两种角才能执行回收权限的操作:
   -sysadmin、db_owner、db_securityadmin角的成员
   -数据库对象的拥有者
  使用SQL语句回收对象权限:
  REVOKE [ GRANT OPTION FOR]
        { ALL | <权限>}
        [ ON <表名> ( <列名>… )]
  FROM <安全帐户>
   [ AS <组名> | <角>]
  例子,回收张三对表authors的所有权限,执行下列语句:
  revoke all
  on authors
  from zhangsan
  2、回收语句权限-SQL语句
  ·语法格式
  REVOKE { ALL | <语句>}
  FROM <安全帐户>
  例子,要把数据库用户zhangsan在pubs中建立表的权限撤销,执行下列语句:
  revoke create table
  from zhangsan
  关于授权和回收权限的说明:
  ·谁要执行GRANT或者REVOKE语句
  ·这种权限操作是针对哪个数据库的
  ·它要把什么样的权限授予哪个用户或者从哪个用户那里回收回来
  ·在授予或者回收权限的过程是否附带了再授权的权限(WITH GRANT OPTION或者GRANT OPTION FOR)
  ·针对数据库权限操作要在master数据库中进行。
  ·SQL Server特别提出了明确禁止访问的DENY语句。
第四节 管理角
利用数据库可以简化把许多权限分配给许多用户的复杂管理任务。建立一个代表一组用户的一个新角,然后把这个角分配给这个工作组。一个用户可以是一个或者多个角的成员。管理角包括新建、修改和删除数据库角。
  管理角的工具:
    -【企业管理器】
    -SQL语句
  管理角的步骤:
    -建立数据库角
    -对角分配权限
    -把用户加入角或者从角中删除
  一、建立数据库角
  1、使用【企业管理器】增加编辑角
  2、使用SQL语句管理角
  ·sp_addrole
  ·sp_addrolemember
  ·sp_droprolemember
  ·sp_droprole
  ·sp_helprole
  ·sp_helprolemember
  sp_addrole的用法:
  语法
  sp_addrole [ @rolename=] ‘<角名>’
        [, @ownername=] ‘<拥有者>’
  例子,要把bianji角添加到pubs数据库中,使用下列命令:
    use pubs
    go
    sp_addrole ‘bianji’, ‘dbo’
    go
  二、对于角设置权限
  对于角ianji设置authors表的插入权限:
    use pubs
    go
    grant insert on authors to bianji
    go
  sp_addrolemember的用法:
  语法
    sp_addrolemember ‘<角>’,’<安全帐户>’
  三、把用户加入角
  把用户zhangsan加入到bianji中:
    sp_addrolemember ‘bianji’,’zhangsan’
    go

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。