设为首页 收藏本站
查看: 793|回复: 0

[经验分享] [sql server] 简明介绍sql server中的安全性 (用户、角色、权限)

[复制链接]

尚未签到

发表于 2016-11-2 06:52:32 | 显示全部楼层 |阅读模式
  --简明介绍sql server中的安全性 (用户、角色、权限)
/*
用户分为 服务器登陆与数据库用户,两者进行关联
角色分为:
服务器角色(固有,不可删改,不可增加自定义);
数据库角色(固有,不可删改、可增加自定义角色);
查看联机,可获得更多帮助
*/
  --实际应用说明
  --sql server 2000 创建登陆、用户、角色,设置权限
-- 添加服务器登陆
EXEC master.dbo.sp_addlogin @loginame = N'logintest', @passwd = '111',
@defdb = N'DBTEST', @deflanguage = N'简体中文'
  /*
--设置登陆的角色
EXEC master..sp_addsrvrolemember @loginame = N'logintest', @rolename = N'sysadmin'
GO
*/
--一个登陆
--可以在多个数据库上创建用户
--但不能在一个数据库上创建多个用户
--为登录 logintest 在数据库 dbtest 中添加安全账户 usertest
use dbtest
go
EXEC dbo.sp_grantdbaccess @loginame = N'logintest', @name_in_db = N'usertest'
  -- 为用户设置数据库角色
-- sp_addrole可以添加自定义的数据库角色
EXEC sp_addrolemember N'db_datareader', N'usertest'
GO
EXEC sp_addrolemember N'db_datawriter', N'usertest'
GO
--以上设置用户logintest只能登陆dbtest数据库,但是我们却可以访问master,pubs等数据库
--这是因为,那些数据库里有个guest用户,guest用户可以与没有设置用户的登陆名关联
--即logintest在master库上没有设置关联用户,就使用了guest用户
  -- 删除数据库用户 ,删除登陆前必须删除登陆的所有数据库用户
IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'usertest')
EXEC dbo.sp_revokedbaccess N'usertest'
go
  -- 删除登录 ,删除登陆前必须删除登陆的所有数据库用户
IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE name = N'logintest')
EXEC master.dbo.sp_droplogin @loginame = N'logintest'
go
  ----------------------------------
----自定义角色的做法
--创建角色 r_test
EXEC sp_addrole 'r_test'
  --授予角色 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test
  --添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test','pwd','pubs'
  --为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test','u_test'
  --添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember 'r_test','u_test'
  --拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test
  /*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/
  --从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess 'u_test'
  --删除登录 l_test
EXEC sp_droplogin 'l_test'
  --删除角色 r_test
EXEC sp_droprole 'r_test'
  
---------------------------------
--sql server 2005里可以有create用法
USE [master]
GO
CREATE LOGIN [logintest] WITH PASSWORD=N'111111', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
USE [db]
GO
CREATE USER [logintest] FOR LOGIN [logintest]
GO
USE [db]
GO
EXEC sp_addrolemember N'db_denydatareader', N'logintest'
GO
USE [db]
GO
EXEC sp_addrolemember N'db_denydatawriter', N'logintest'
GO
--服务器角色
  --详细的权限设置,建议查看联机的
grant 、 deny 、 REVOKE

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-294416-1-1.html 上篇帖子: SQL Server 2005 学习笔记系列文章导航 下篇帖子: 局域网内不能访问SQL Server 2005 的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表