一.登录界面引入数据库
下图为SQL Server的登录界面。安全
1)服务器名称:“.”表明本地计算机,选择下拉框,能够看见还有一个与本机机名相同的内容,也表明于本地服务器链接;要链接远程服务器的话,在此处填写远程IP地址;服务器
2)身份验证:身份验证下拉框内容为”Windows 身份验证“和 ”SQLServer 身份验证“两种登录方式,这就是登录帐户。antd
”Windows 身份验证“:适合于Windows平台用户,不须要提供密码和Windows集成验证;学习
”SQLServer 身份验证“:适合于非Windows平台用户或Internet用户,须要提供登录帐号和登录密码;帐号sa就属于该种登录帐户,是一个超级管理员登录帐号。spa
3)sa登录帐号.net
sa是一个超级登录帐号,咱们使用他后,能够看见数据库服务器中的全部数据库,及各数据库中全部的表,拥有着管理数据库服务器的全部权限,刚学习.net程序开发的时候,应用程序,会使用该帐号链接数据库,由于该帐号的特殊性,使得咱们在开发程序时,使用该帐号,对数据库安全性极其不安全(由于能够看到全部的数据库,数据表,并能对数据库进行增删改操做)。为此,在程序开发中,有必要经过添加新的登录帐号,添加对应的数据库用户,并对数据库用户设置不一样的权限,以保证数据库及数据的安全性。code
下面内容主要说明怎样建立登录帐号,建立数据库用户,及对数据库用户授予权限。server
二.登录帐号添加与删除对象
1)登录帐号添加
1.建立Windows 登录帐户, 语法: exec sp_grantlogin '登录帐号'
use master go exec sp_grantlogin 'LAPTOP-R1U6PBGI\xiaoming' --LAPTOP-R1U6PBGI表明本机机器名,xiaoming表明该电脑的一个用户名,这个帐号能够经过"计算机管理"中的"本地用户和组"来为该电脑添加用户,并设置对本电脑操做权限
2.建立SQL Server登录帐户, 语法: exec sp_addlogin '登录帐号',‘登录密码’
use master go exec sp_addlogin 'xiaoming','123456'
执行代码后,在数据库客户端会显示这两个登录帐号,以下图所示
2)删除登录帐户,语法:exec sp_droplogin '登录帐号'
use master go exec sp_droplogin 'LAPTOP-R1U6PBGI\xiaoming'
用新建立的登录帐号登录SQL server客户端后(没有为其添加数据库用户和权限),点击里面的数据库发现SQL server客户端报如下提示
而且[安全性]里的[登录名]与sa帐号里的内容不一样,只有'sa'和刚刚建立的'xiaoming'帐号
备注:
使用刚建立的登录帐号登录客户端,在没有为其设置数据库用户的时候,只能看见里面有的数据库,不能打开数据库,更不能查看其中的数据表,不能执行SQL语句的查询.
三.数据库用户
1)建立数据库用户
指定为哪一个数据库添加数据库用户,基本语法:exec sp_grantbaccess '登录帐户名','数据库用户名'
use SMDB--为数据库SMDB建立数据库用户名 go exec sp_grantdbaccess 'xiaoming','xiaomingUser01'
建立登录帐户都是在master数据库下执行的,而数据库用户名是为具体的数据库内建立,全部使用 use SMDB go 语法指向SMDB数据库,调用系统存储过程sp_grantdbaccess 建立名为xiaomingUser01的用户名,其登录帐号名为xiaoming。
下图能够看见,数据库SMDB中的安全性里的用户已有xiaomingUser01用户名
从上图还能够看见,dbo数据库用户名,它表示数据库的全部者(DB Owner)。能够对数据库和其对象进行全部的管理工做,拥有数据库操做的全部权限。咱们没法删除dbo用户,此用户出现每一个数据库中,默认分配给sa登录帐号,因此sa登录帐号能够访问全部的数据库。
2)删除数据库用户
一样是在具体的数据库中执行删除,而非master数据库中执行
语法: exec sp_dropuser '数据库用户名'
use SMDB go exec sp_dropuser 'xiaomingUser01';
四.给数据库用户受权
为数据库建立完数据库用户名后,使用xiaoming登录帐号登录客户端后,发现咱们只能打开数据库SMDB,其余数据库一样没法打开,打开SMDB数据后,发现‘表’中内容为空,没有数据表,这是为什么?由于咱们尚未为用户受权,这样,用户就不能对数据库进行操做,为保证软件使用功能,咱们有必要对数据用户进行限制。如银行管理系统,客户和银行对银行软件系统的访问权限是不一样的,客户只能查看本身帐户的信息,如存款多少,透支额度,密码修改等权限,不能查看其余客户信息;而银行则能够查看全部的客户基本信息,如客户卡号,开卡时间,卡号是否冻结等权限,却不能更改客户的密码,存款多少,更改存款等权限。可见,给数据库用户受权的重要性,及安全性,它保证了不一样用户操做同一数据库的权限。
1)受权语法
grant 权限 [on 表名] to 数据库用户
2)收回权限语法
revoke 权限 [on 表名] to 数据库用户
注明:[]里的内容是限定数据库中数据表,能够不加,不加[]内容表示给数据库中的全部数据表受权,加上[]限定内容,只是对限定的表格受权。
use SMDB go grant select,insert,update on Students to xiaomingUser01
给表Students受权增、改、查数据操做后,咱们使用xiaoming登录帐号登录后,能看见数据库SMDB中的表Students,却看不见其余的数据表,并且在Students表中不能执行删除操做,由于咱们没有赋予删除的权限。
use SMDB go grant select,insert,update to xiaomingUser01
对比两段代码,执行后,代码1只是给Students数据表受权,而代码2没有限定,则给数据库SMDB中全部数据表受权。
3)数据库角色
给用户单独受权很是麻烦,为此咱们能够给数据库用户赋予一个对应的“角色”;角色自动给数据库用户相应的权限。使用方便。下面为经常使用的固定角色。
1.数据库角色
public
--public 角色是一个特殊的数据库角色,每一个数据库用户都属于它。public 角色:
--捕获数据库中用户的全部默认权限。
--没法将用户、组或角色指派给它,由于默认状况下它们即属于该角色。
--含在每一个数据库中,包括 master、msdb、tempdb、model 和全部用户数据库。
--没法除去。
db_owner
--进行全部数据库角色的活动,以及数据库中的其它维护和配置活动。
--该角色的权限跨越全部其它固定数据库角色。
db_accessadmin
--在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。
db_datareader
--查看来自数据库中全部用户表的所有数据。
db_datawriter
--添加、更改或删除来自数据库中全部用户表的数据
db_ddladmin
--添加、修改或除去数据库中的对象(运行全部 DDL)
db_securityadmin
--管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限
db_backupoperator
--有备份数据库的权限
db_denydatareader
--拒绝选择数据库数据的权限
db_denydatawriter
--拒绝更改数据库数据的权限
2.添加和删除固定角色的基本语法
exec sp_addrolemember '数据库角色名',‘数据库用户名’
exec sp_droprolemember ‘数据库角色名’,‘数据库用户名’
3.具体代码:
use SMDB go exec sp_addrolemember 'db_owner','xiaomingUser01'--增长db_owner角色 exec sp_droprolemember 'db_owner','xiaomingUser01'--删除角色
五.补充说明
登录帐号和数据库及数据库用户的关系
登录帐号和数据库用户是一对多的关系,数据库用户和数据库是一对一的关系。一个登录帐号,能够有多个数据库用户,而一个数据库用户只能与一个数据库对应。
说明:
以上内容为本人学习过程当中整理,可能有知识点不全,或理解不足之处,请你们多多留言指教。