sqlserver为不同数据库建立不同访问权限的帐号

正式服务器中,为了安全、互不干扰,会给个DB库分配不同的账号,A库有ARead\AReadWrite\AOwn账号,B库有BRead\BReadWrite\BOwn账号。需要配置出来,甚至还能限制AReadUserTable只能对A库的User表读取权限。

 以下操作有问题、不能完整实现需求!我抽空改

有UI操作和代码命令行操作2种。

需要区分好:账号、数据库角色、数据库用户等概念(参考https://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html 的解释):

UI:https://www.cnblogs.com/yxyht/archive/2013/03/22/2975880.html  (建议将《强制实施密码策略》及其下2个选项去除勾选)。

代码:https://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html

1 --创建登陆帐户(create login)
2 CREATE LOGIN CommonAuthoritySystem_Read WITH PASSWORD='123456', DEFAULT_DATABASE=CommonAuthoritySystem
3 
4 --为登陆账户创建数据库用户(create user),在mydb数据库中的security中的user下可以找到新创建的CommonAuthoritySystem_Read
5 CREATE USER CommonAuthoritySystem_Read FOR LOGIN CommonAuthoritySystem_Read WITH DEFAULT_SCHEMA=dbo
6 
7 --通过加入数据库角色,赋予数据库用户“db_owner”权限
8 ----db_owner,db_datareader,db_datawriter
9 EXEC sp_addrolemember 'db_datareader', 'CommonAuthoritySystem_Read'

注意:若要限制表,需要到数据库——表  属性那边去限制

 

 

 

真心感到:虽然windows可视化配置简单易学,但大规模运维如果还是点点弄弄,效率太低、容易出错、容易忘记,不如命令行封装成参数方法,用时只要执行就行。快速!

所以linux多搞搞,还是很高效的,深感linux、mysql的精神强大。

登陆帐户名为:“dba”,登陆密码:abcd1234@”,默认连接到的数据库:“mydb”。 这时候,dba 帐户就可以连接到 SQL Server 服务器上了。但是此时还不能 访问数据库中的对象(严格的说,此时 dba 帐户默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象)。

要使 dba 帐户能够在 mydb 数据库中访问自己需要的对象, 需要在数据库 mydb 中建立一个“数据库用户”,赋予这个“数据库用户” 某些访问权限,并且把登陆帐户“dba” 和这个“数据库用户” 映射起来。 习惯上,“数据库用户” 的名字和 “登陆帐户”的名字相同,即:“dba”。 创建“数据库用户”和建立映射关系只需要一步即可完成:

2. 创建数据库用户(create user):

--为登陆账户创建数据库用户(create user),在mydb数据库中的security中的user下可以找到新创建的dba
create user dba for login dba with default_schema=dbo

并指定数据库用户“dba” 的默认 schema 是“dbo”。这意味着 用户“dba” 在执行“select * from t”,实际上执行的是 “select * from dbo.t”。

3. 通过加入数据库角色,赋予数据库用户“dba”权限:

--通过加入数据库角色,赋予数据库用户“db_owner”权限
exec sp_addrolemember 'db_owner', 'dba'

此时,dba 就可以全权管理数据库 mydb 中的对象了。

posted on 2018-01-15 23:19  nlh774  阅读(545)  评论(0编辑  收藏  举报