一,背景
最近公司要把数据库按照项目,重新建立数据库登录名和用户,并且新的登录名只能管理该项目下的数据库。
公司的数据库服务器上有很多项目数据库,之前一直是统一使用sa让应用连接数据库,为了提高数据的安全性,要禁用sa账户,因为这个账户权限太高,需要为每个项目单独创建一个登录名和用户。
开发要求:最好每个用户只能看到自己授权的数据库。
比如:
sa登录名的视角
数据库:
DataBase1
DataBase2
DataBase3
user1登录名的视角(假如,user1被授权的数据库为DataBase1)
数据库:
DataBase1
二,登录名与用户名的区别
“登录名登录后,通过检查数据库有没有与该登录名映射到用户名,如果有则赋予该登录名相应权限,如果无则拒绝赋予该登录名权限”。也就是说通过数据库用户名来确定该登录名对哪些数据库具有权限。
就像大楼和房间的例子:一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。
引用自:登录名与用户名的区别
三,操作步骤
方案1
1,sa账户登录
2,单击 安全性 --》登录名 --》右键 新建登录名
3,输入 登录名,密码,取消 强制密码过期
3,点击 服务器角色
勾选,public(默认勾选)
sysadmin 执行SQL Server中的任何操作
serveradmin 配置服务器设置
setupadmin 安装复制和管理扩展过程
securityadmin 管理登录和CREATE DATABASE的权限以及阅读审计
processadmin 管理SQL Server进程
dbcreator 创建和修改数据库
diskadmin 管理磁盘文件
4,用户映射,只勾选当前用户负责的数据库,
数据库角色成员身份,勾选:db_owner。如果授权多个数据库,每个数据库都要勾选上db_owner。
勾选要授权的数据库,然后再下方窗格中勾选 db_owner。如果是授权多个数据库,一定要挨个操作,我在这里被坑了很久。
‘db_owner’ --拥有数据库全部权限,包括删除数据库权限 ‘db_accessadmin’ - - 只给数据库用户创建其他数据库用户的权限,而没有创建登录用户的权限。
‘db_securityadmin’ --可以管理全部权限、对象所有权、角色和角色成员资格
‘db_ddladmin’ --可以发出所有DDL(Create,Alter和Drop),但不能发出GRANT、REVOKE或DENY语句
‘db_backupoperator’ --允许对数据库进行备份和还原的权限【备份与还原是通过sql sever management
studio也可以进行】
‘db_datareader’ --可以选择数据库内任何用户表中的所有数据
‘db_datawriter’ --可以更改数据库内任何用户表中的所有数据
‘db_denydatareader’ --不能查询数据库内任何用户表中的任何数据 ‘db_denydatawriter’ --不能更改数据库内任何用户表中的任何数据
5,最后点击确定即可。
注意:
这种方式创建的用户,对于数据库来说并不是数据库的拥有者,所以在<安全对象> 当勾选 <查看任意数据库> 拒绝的复选框时,会发现没有任何数据库显示。取消勾选后,又可以看到所有数据库,只是未授权的数据库点击后提示:无法访问数据库。
这时,需要把对应数据库里对应的用户删除掉,然后再执行这句代码。将数据库的拥有者权限赋给login_name。
ALTER AUTHORIZATION ON DATABASE::databaseName TO login_name
方案2
1,sa账户登录
2,单击 安全性 --》登录名 --》右键 新建登录名
3,输入 登录名,密码,取消 强制密码过期
4,点击确定,点击新建查询
将指定数据库的所有权移交给这个登录名用户。即可。
MonitorData 替换为你的数据库
user 替换为你的登录名
ALTER AUTHORIZATION ON database:: [MonitorData] TO [user]
5,取消查看任意数据库权限
如果不想要显示该用户未授权的数据库,只需要在该登录名的属性–》安全对象–》查看任意数据 勾选拒绝。文章来源:https://www.toymoban.com/news/detail-780518.html
4,总结
微软的SQLServer是学习的好地方,值得深入研究,有任何问题也可以评论或者私信我。
微软SQLServer官方文档地址
一起学习,共同成长。文章来源地址https://www.toymoban.com/news/detail-780518.html
到了这里,关于SQL Server 新建登录名以及用户授权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!