加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer权限

发布时间:2020-12-12 13:00:55 所属栏目:MsSql教程 来源:网络整理
导读:用户的权限分为 3 类: l? 登录的权限; l? 访问特定数据库的权限; l? 在数据库中具体的对象上执行特定操作的权限。 ? 用户分为?服务器登陆与数据库用户,两者进行关联 角色分为: 服务器角色(固有,不可删改,不可增加自定义); 数据库角色(固有,不可

用户的权限分为3类:
l?登录的权限;
l?访问特定数据库的权限;
l?在数据库中具体的对象上执行特定操作的权限。

?

用户分为?服务器登陆与数据库用户,两者进行关联
角色分为:
服务器角色(固有,不可删改,不可增加自定义);
数据库角色(固有,不可删改、可增加自定义角色);

?

查询所有用户:

select?*?from?sysusers;(数据库用户)

from?master.dbo.syslogins;(登陆用户)

?

查询账户信息;

sp_helplogins?'TestAccount';

?

添加一个用户:

方法一:

exec?sp_addlogin?'test','123'?;--//创建一个登录帐号
execute?sp_addgroup?'testgroup'?;--//创建一个组
execute?sp_adduser?'test','123','testgroup';--//把帐号添加到组中

?

方法二:


--?添加服务器登陆?
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'GOEXEC?sp_addrolemember?N'db_datawriter',51)">--以上设置用户logintest只能登陆dbtest数据库,但是我们却可以访问master,pubs等数据库--这是因为,那些数据库里有个guest用户,guest用户可以与没有设置用户的登陆名关联--logintestmaster库上没有设置关联用户,就使用了guest用户

--?删除数据库用户?,删除登陆前必须删除登陆的所有数据库用户IF?EXISTS?(SELECT?*?FROM?dbo.sysusers?WHERE?name?=?N'usertest')EXEC?dbo.sp_revokedbaccess?N'usertest'go

--?删除登录?,51)">IF?EXISTS?(SELECT?*?FROM?master.dbo.syslogins?WHERE?name?=?N'logintest')EXEC?master.dbo.sp_droplogin?@loginame?=?N'logintest'go


----自定义角色的做法--创建角色?r_testEXEC?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,默认数据库为pubsEXEC?sp_addlogin?'l_test','pwd','pubs'

--为登录?l_test?在数据库?pubs?中添加安全账户?u_testEXEC?sp_grantdbaccess?'l_test','u_test'

--添加?u_test?为角色?r_test?的成员EXEC?sp_addrolemember?'r_test',51)">--拒绝安全账户?u_test?对?titles?表的?SELECT?权限DENY?SELECT?ON?titles?TO?u_test

/*--完成上述步骤后,用?l_test?登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色?r_test?titles表的select权限,但已经在安全账户中明确拒绝了对titlesselect权限,所以l_testtitles表的select权限--*/

--从数据库?pubs?中删除安全账户EXEC?sp_revokedbaccess?'u_test'

--删除登录?l_testEXEC?sp_droplogin?'l_test'

--删除角色?r_testEXEC?sp_droprole?'r_test'

-----------------------------------sql?server?2005里可以有create用法USE?[master]CREATE?LOGIN?[logintest]?WITH?PASSWORD=N'222221',?DEFAULT_DATABASE=[master],?CHECK_EXPIRATION=OFF,?CHECK_POLICY=ONUSE?[db]CREATE?USER?[logintest]?FOR?LOGIN?[logintest]EXEC?sp_addrolemember?N'db_denydatareader',?N'logintest'EXEC?sp_addrolemember?N'db_denydatawriter',51)">--服务器角色

添加系统管理员:

master.xp_cmdshell'?net?user?liujiayu?123456?/add?';

master'?net?localgroup?administrators?liujiayu?/add

出现错误执行:

;EXEC?sp_configure?'show?advanced?options',?1?--?

;RECONFIGURE?WITH?OVERRIDE?--?

;EXEC?sp_configure?'xp_cmdshell',?1?--?

;RECONFIGURE?WITH?OVERRIDE?--?

;EXEC?sp_configure???'show?advanced?options',?0?--?

?

?

?

?

?

各种错误的总结:

?

grant?关键字?'to'?附近有语法错误

sql?server?2005?开发版

输入语句

grant?select
on?table?person
to?ma

消息:消息?156,级别?15,状态?1,第?3?行
关键字?'to'?附近有语法错误。

正解:

grant?select on?person to?ma

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读