sqlserver 创建用户只能访问指定视图,sqlserver视图
use crm
--当前数据库创建角色
exec sp_addrole 'rapp'
--分配视图权限 GRANT SELECT ON veiw TO [角色]
--指定视图列表
GRANT SELECT ON v_city TO rapp
GRANT SELECT ON v_lp TO rapp
GRANT SELECT ON v_qy TO rapp
go
--添加只允许访问指定视图的用户: exec sp_addlogin '登录名','密码','默认数据库名'
exec sp_addlogin 'sa','sa_pwd','crm'
此处可能执行不了,要求密码强度,那就自己手工创建
go
--添加只允许访问指定视图的用户到rCRM角色中: exec sp_adduser '登录名','用户名','角色'
exec sp_adduser 'sa','sapwd','rapp'
1. SQL数据库分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
一般对整个库做权限的时候都是需要所有权限勾选db_owner就可以了(确定)
这样就可以用我们新建的这个用户名来访问我们的数据库服务器了,而且这个用户名只拥有我们所勾选的数据库的所有权限。
2. SQL数据库对每个表分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
因为我们要对每个表进行单独的设置所以这里我们就不勾选db_owner了
打开我们刚才勾选的test数据库安全性用户中看到我们刚才新建的那个用户了。
找到新建的用户名右键属性
安全对像
添加
特定类型的所有对象确定
对象类型选择表
确定这样我们就能看到test数据库中的所有表了
接着我们再对每个表设置权限
我对两个表都是设置的Select权限确定这样我们用test_name登陆test数据库的时候只能对其中的两个表做Select操作不能做其它操作
你可以创建一个表或者试图(tablename),用于维护允许访问的表、视图、存储过程,
select 'grant all on'+' '+name+' '+'username' from tablename