设为首页 收藏本站
查看: 1512|回复: 0

[经验分享] SQL server服务器登录名、角色、数据库用户、角色、架构的关系

[复制链接]

尚未签到

发表于 2018-10-23 11:18:28 | 显示全部楼层 |阅读模式
  转载网址:http://blog.csdn.net/wangsen2235068/article/details/6893871
  1. 服务器登陆名,sa就是一个服务器登陆名。ConnectionString中的user="myloginname",myloginname就是你连接的数据库用户名,pwd="mypass",mypass是myloginname的密码.
  新建一个登录名的时候,默认数据库是master(如果选择了,其他数据库,那么,其他数据库的数据库角色必须对应myloginname,否则报错),默认服务器角色是public,必选;用户映射的数据库为0个,所选数据库的(默认第一个)的数据库角色成员身份::数据库角色.默认勾选public,必选。
  如果,添加登陆名的时候,用户映射那里,同时选择了一个数据库。并且该数据库的角色,勾选了db_ower或更高权限。那么SqlServer会自动给该数据库添加一个和登录名同名的数据库用户,隶属于登录名myloginname。(注意:删除登录名时候,不会删除和该登录名关联的用户。所以,当下一次创建同名登录名给相同数据库分配角色时候。SQL会自动给该数据库添加同名的数据库用户名,但是数据库的用户中,已经存在该用户名,所以,会报错。解决方案有2中,一,先删除数据库中的用户名,在添加,同时映射。或者二:先不要映射数据库,这样能添加成功。然后,在去数据库删除老用户名,重新添加,指向登录名myloginname)
DSC0000.jpg

  2.服务器角色名:系统内置不可添加和修改,普通登录名默认public角色,sa(系统管理员sysadmin)默认public 和sysadmin
DSC0001.jpg

  2.1服务器角色作用是什么呢?
  做过权限管理都知道,系统有n个权限。每个用户也有若干个权限。有很多系统职位的人的权限是一样的。那么如果每个用户分配权限,就会造成多余,因为可能1万个都是一样的权限,那么我们不需要分别给这一万个用户都分配权限,而是给一个角色分配权限,然后,这一万个用户,都属于这个角色就可以了。
  2.2服务器角色有哪些权限呢?
  3.数据库用户:隶属于服务器登录名;属于某组数据库角色以获取操作数据库的权限
  4.数据库角色,登陆用户
  5.数据库架构,
DSC0002.jpg

  以下是引用,原文:http://mybloggers.blog.163.com/blog/static/100386509201132654117739/:
  今天我们要说的包括服务器登录名Server Login,服务器角色Server Role,数据库用户DB User,数据库架构DB Schema,数据库角色DB Role 。以上几个名词应该从服务器与数据库来区分,服务器包含一到多个数据库,其中:
  服务器登录名,指有权限登录到某服务器的用户;
  服务器角色,指一组固定的服务器用户,默认有9组;

  •   登录名一定属于某些角色,默认为public
  •   服务器角色不容许更改
  •   登录后也不一定有权限操作数据库
  数据库用户,指有权限能操作数据库的用户;
  数据库角色,指一组固定的有某些权限的数据库角色;
  数据库架构,指数据库对象的容器;

  •   数据库用户对应于服务器登录名以便登录者可以操作数据库
  •   数据库角色可以添加,可以定制不同权限  
  •   数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象
  而通过下图可以让这些概念清晰一些:
DSC0003.jpg

  即:

  •   服务器登录名属于某组服务器角色;
  •   服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限
  •   数据库用户属于某组数据库角色以获取操作数据库的权限
  •   数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构
  •   数据库用户有默认架构,写SQL语句可以直接以“对象名”访问
  •   非默认架构则要以“架构名.对象名”访问
  因此,新建一个非SA账户并建立数据库的过程可以如下:
  1、新建登录名Login1
DSC0004.jpg

  2、新建数据库DB1
DSC0005.jpg

  3、新建DB1的架构Schema1
DSC0006.jpg

  4、新建BD1的用户User1,登录名对应Login1,默认架构选择Schema1,角色选择db_owner
DSC0007.jpg

  5、在登录名Login1的属性窗口里选择“用户映射”,勾选DB1,在用户里填写User1,默认架构选择"Schema1"

  6、至此,新建表名会是Schema1.Table1,其他对象也如此


  7、当然还可以新建其他架构的对象Schema2,只有User1拥有该架构,一样可以访问,如Schema2.Table2
  值得注意的是,当为登录映射数据库用户的时候,多个数据库可以有相同名称的用户,而单独为某个数据库新建的用户,如User1,则在其他数据库里不允许同名。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-625393-1-1.html 上篇帖子: Ubuntu 12.04 Server 中安装图形用户界面 下篇帖子: SQL Server DDL 触发器(Trigger)-- 创建服务器级别的DDL触发器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表