sql server限制用户只能访问特定表
一个老系统的sqlserver 数据库需要新建一个用户,并限制这个新用户只能访问指定的几个数据表。
1.夺权
创建用户简单,但是登录用户没有管理权,windows管理员登录用户也没有管理权限,这就需要夺权,在单用户模式下,重置sql server的sa密码,或者重新创建一个管理用户,不知道有没有其它程序使用sa用户登录,所以修改sa密码不是一个好方法。
--运行--cmd
net stop mssqlserver --停止数据库服务
net start mssqlserver /m --启动到单用户模式
sqlcmd -S.
1> use master
2> go
3> create login sa_bak with password='y85632582', check_policy=off
4> go
5> alter server role sysadmin add member sa_bak
6> go
7> exit
net stop mssqlserver --停止数据库服务
net start mssqlserver --启动
夺权成功。
2.创建用户
2.1修改服务器角色中的public ,将服务器的查看任意数据的权限关闭,这样这个用户用管理工具连接的时候看到授权数据库,而不是所有数据库
2.2新建sql server登录用户,默认数据库设置为授权数据库,服务器角色中不调整,还是public,
用户映射的地方,选择授权数据库,角色成员选择public
3.数据库表授权
在数据库中,找到具体的表,右键属性--权限
搜索到新建的用户,勾选下面的权限(select/insert)等,如果是设置只读,那就选择select。
4.测试
使用新建的用户登录管理控制台,测试权限是否生效。