Sql server 权限管理
来源:互联网 发布:淘宝封店支付宝还能用 编辑:程序博客网 时间:2024/05/21 06:32
1、设置某一登录账户只能看到部分数据库
参考 TN VIEW ANY DATABASE权限
通过sp_addlogin创建登录名
–basic:用户登陆账号
–basic123456:用户登陆密码
USE masterGOexecute sp_addlogin 'basic','basic123456'
–VIEW ANY DATABASE 权限控制是否显示 sys.databases 和 sys.sysdatabases 视图以及 sp_helpdb 系统存储过程中的元数据。
可用下面语句查询状态:
SELECT l.name as grantee_name, p.state_desc, p.permission_name FROM sys.server_permissions AS p JOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_idWHERE permission_name = 'VIEW ANY DATABASE' ;GO
拒绝basic登录名访问任何数据库(看不到) deny VIEW ANY DATABASE TO [basic];
--GRANT VIEW ANY DATABASE TO <login> 授予特定登录帐户
若想被登录账户basic 看到某一数据库如: BasicData , 执行下面的语句:
ALTER AUTHORIZATION ON DATABASE::BasicData TO [basic]
–use BasData
–这一步骤执行不了,提示已经存在basic账号了。
–经过测试,将前面创建账号的步骤去掉,这一语句即可正常执行。
–在数据库BasicData里创建数据库basic账号
–第一个basic为登陆名
–第二个basic为数据库账号
–execute sp_grantdbaccess ‘basic’,’basic’
–将TestUser账号添加到数据库角色为数据库所有者
–execute sp_addrolemember ‘db_owner’,’basic’
2、赋予、回收表的权限
---授予用户person对表Person.Address的修改权限USE AdventureWorks2008R2;GRANT UPDATE ON Person.Address TO person;GO---授予用户person对表Person.Address的插入权限USE AdventureWorks2008R2;GRANT INSERT ON Person.Address TO person;GO---授予用户person对表Person.Address的删除权限USE AdventureWorks2008R2;GRANT DELETE ON Person.Address TO person; --授予用户存储过程dbo.prc_errorlog的执行权限GRANT EXECUTE ON dbo.prc_errorlog TO person
--回收修改USE AdventureWorks2008R2;REVOKE update ON Person.Address FROM person;USE AdventureWorks2008R2;REVOKE alter ON Person.Address FROM person;--回收删除USE AdventureWorks2008R2;REVOKE delete ON Person.Address FROM person;--回收查询USE AdventureWorks2008R2;REVOKE select ON Person.Address FROM person;
3、查询权限
登入名表
select * from master.sys.syslogins
登入名与服务器角色关联表
select * from sys.server_role_members
服务器角色表
select * from sys.server_principals
查询登入名拥有的服务器角色
select SrvRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.server_role_members m inner join sys.server_principals g on g.principal_id = m.role_principal_id inner join sys.server_principals u on u.principal_id = m.member_principal_id
数据库用户表
select * from sysusers
数据库用户表角色关联表
select * from sysmembers
数据库角色表
select * from sys.database_principals
查询数据库用户拥有的角色
select ta.name as username,tc.name as databaserole from sysusers ta inner join sysmembers tb on ta.uid=tb.memberuid inner join sys.database_principals tc on tb.groupuid=tc.principal_id
查询当前数据库用户关联的登入名
use AdventureWorks2008R2 select ta.name as loginname,tb.name as databaseusername from master.sys.syslogins ta inner join sysusers tb on ta.sid=tb.sid
如果将当前数据库还原到另一台服务器实例上,刚好那台服务器上也存在person登入用户,你会发现二者的sid不一样,
由于sid不一样,所以登入用户不具有当前数据库的访问权限,我们要想办法将二者关联起来。
关联登入名与数据库用户(将数据库用户的sid刷成登入名的sid)
use AdventureWorks2008R2 EXEC sp_change_users_login 'Update_One', 'person', 'person' Go
4、补充
USE [master]GO---创建登入名CREATE LOGIN [person] WITH PASSWORD=N'person', DEFAULT_DATABASE=[news], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFFGOUSE [news]GO---在指定的数据库下创建和登入名相关联的数据库用户CREATE USER [person] FOR LOGIN [person]GOUSE [news]GO---在指定的数据库下授予用户SELECT,DELETE,UPDATE,INSERT,EXECUTE权限。GRANT SELECT,DELETE,UPDATE,INSERT,EXECUTE TO person;
参考 SQL Server 权限管理
over.
- SQL Server 权限管理
- SQL Server 权限管理
- Sql server 权限管理
- SQL Server中角色与权限管理
- SQL Server 创建用户及权限管理
- SQL Server中角色与权限管理
- SQL Server中角色与权限管理
- SQL Server中角色与权限管理
- SQL Server中角色与权限管理
- SQL Server中角色与权限管理
- SQL Server与Oracle对比学习:权限管理(一)
- SQL Server与Oracle对比学习:权限管理(二)
- SQL Server与Oracle对比学习:权限管理(一)
- 【Sql Server学习】Sql Server数据查询、数据更新、视图、权限管理
- SQL server 权限问题
- sql server2000权限管理
- SQL 权限管理
- SQL权限管理
- c++对文件进行操作之遍历双层文件结构
- js动态添加子节点
- centos 增加端口 修改防火墙
- 常用类(Object类,Scanner类,String类)
- Eclipse 交叉编译环境
- Sql server 权限管理
- centos 增加端口 修改防火墙
- day07-工作
- this和super
- 011-SDK框架之LYWSDKProtocolIOS.h
- AsyncTask 源码分析
- [ccf/csp题]201412-2 Z字形扫描
- STL空间配置器(一)
- PhotonServer学习