安全权限控制 sqlserver2008里面 datareader账号怎么控制只能访问指定的用户数据库,其他数据库不能访问,包括系统数据库如master以及master相关的系统表 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是sql server本身已定义这个角色只能读数据,不需要我们再做什么控制。 这角色已经定义好的 1、datareader 不可改2、master库是默认可读的,有很多操作必须去读取master,如果你有这种要求,而且找不到其他替代方案,只能单独grant一些所需权限给那个帐号 这个datareader是值,你只有select的权限。你其实应该限制登录名,只在指定的数据库中有数据库用户,就可以了。做了一个实验,你看看:--1.创建数据库create database test1go--2.创建登录名create login [test_login] with password = 'test_login', --密码 default_database = [test1]use test1go --3.创建数据库用户:test_logincreate user test_login for login test_login go--4.把数据库用户test_login加入到 db_datareader数据库角色中exec sp_addrolemember @rolename = 'db_datareader', @membername = 'test_login' go--5.建表create table tt(id int,v varchar(10))insert into ttvalues(1,'a') 然后,用新的login登录:然后,我点击了一下pub是数据库的加号,弹出窗口报错:能点击master数据库,master数据库下有很多表,但是从下面的图中我们可以看到,一个表都没有,说明也访问不到master数据库里的数据:而原来的master下有很多表:最后,我们点击test1数据库,执行如下命令:--1.select *from tt/*id v1 a*/--2.delete from tt/*消息 229,级别 14,状态 5,第 1 行拒绝了对对象 'tt' (数据库 'test1',架构 'dbo')的 DELETE 权限。*/ Use DATABASE --创建角色 create role ProgramerRole --用于创建表 视图 ,不允许创建存储过程grant create table,create view to ProgramerRole --execute用以执行存储过程,alter用以修改视图, --有对表的基本操作,select,update,insertgrant select,insert,update,delete,execute,alter on schema::dbo to ProgramerRole --创建登录账号,用来登录用 create login feimao with password='123456' --创建数据库用户 create user feimao for login feimao --将用户feimao添加到ProgramerRole角色中 exec sp_addrolemember 'ProgramerRole','feimao' exec sp_addrolemember 'db_datareader','feimao' --只有读取某个数据库的权限 如何设计一个数据库让繁体也能显示.简体也能显示 SQL选择前N条不重复与一列的记录 把列变成行显示 优化 JSP sql数据库字段记录局部替换 sql server数据库和excel表格的匹配 多层外连接时,报错DB-Library Process Dead 化解字符串不能超过8000的方法 查询速度问题 SQL SERVER 2000出错信息666,如何解决? MySQL 安装问题
2、master库是默认可读的,有很多操作必须去读取master,
如果你有这种要求,而且找不到其他替代方案,只能单独grant一些所需权限给那个帐号
create database test1
go--2.创建登录名
create login [test_login]
with password = 'test_login', --密码
default_database = [test1]use test1
go
--3.创建数据库用户:test_login
create user test_login for login test_login
go
--4.把数据库用户test_login加入到 db_datareader数据库角色中
exec sp_addrolemember
@rolename = 'db_datareader',
@membername = 'test_login'
go
--5.建表
create table tt(id int,v varchar(10))insert into tt
values(1,'a')
然后,用新的login登录:
然后,我点击了一下pub是数据库的加号,弹出窗口报错:
能点击master数据库,master数据库下有很多表,但是从下面的图中我们可以看到,一个表都没有,说明也访问不到master数据库里的数据:
而原来的master下有很多表:
最后,我们点击test1数据库,执行如下命令:--1.
select *
from tt
/*
id v
1 a
*/
--2.
delete from tt
/*
消息 229,级别 14,状态 5,第 1 行
拒绝了对对象 'tt' (数据库 'test1',架构 'dbo')的 DELETE 权限。*/
--创建角色
create role ProgramerRole
--用于创建表 视图 ,不允许创建存储过程
grant create table,create view to ProgramerRole
--execute用以执行存储过程,alter用以修改视图,
--有对表的基本操作,select,update,insert
grant select,insert,update,delete,execute,alter on schema::dbo to ProgramerRole
--创建登录账号,用来登录用
create login feimao with password='123456'
--创建数据库用户
create user feimao for login feimao --将用户feimao添加到ProgramerRole角色中
exec sp_addrolemember 'ProgramerRole','feimao'
exec sp_addrolemember 'db_datareader','feimao' --只有读取某个数据库的权限