数据库用户:隶属于服务器登录名;属于某组数据库角色以获取操作数据库的权限

如果,添加登录名的时候,用户映射那里,同时选择了一个数据库。并且该数据库的角色,勾选了db_ower或更高权限。那么SqlServer会自动给该数据库添加一个和登录名同名的数据库用户,隶属于登录名myloginname。(注意:删除登录名时候,不会删除和该登录名关联的用户。所以,当下一次创建同名登录名给相同数据库分配角色时候。SQL会自动给该数据库添加同名的数据库用户名,但是数据库的用户中,已经存在该用户名,所以,会报错。解决方案有2中,一,先删除数据库中的用户名,在添加,同时映射。或者二:先不要映射数据库,这样能添加成功。然后,在去数据库删除老用户名,重新添加,指向登录名myloginname)


sa这个登录名对应的用户名是dbo而不是sa就行了

服务器登录名、服务器角色 、数据库用户名、 数据库角色、数据库架构

登录名只是具有连接到SQLSERVER的权限,而没有访问SQLSERVER上数据库的权限,所以要为该登录名在指定的 数据库中创建用户名,使其可以访问那个数据库中的数据.一个登录名可以在多个数据库中创建用户名,以使这个登录名能够访问多个数据库(在登录连接的字符串 中指定默认的数据库名称),但是一个登录名在一个数据库中只能创建一个对应的用户名

服务器登录名Server Login,服务器角色Server Role,数据库用户DB User,数据库架构DBSchema,数据库角色DB Role 。
应该从服务器与数据库来区分,服务器【SQL】包含一到多个数据库,其中:
服务器登录名,指有权限登录到某服务器的用户;
服务器角色,指一组固定的服务器用户,默认有9组;服务器角色不容许更改
登录名一定属于某些角色,默认为public
登录后也不一定有权限操作数据库,如果没有用户映射,是无法登录数据库的
数据库用户,指有权限能操作数据库的用户;不一定属于角色
数据库角色,指一组固定的有某些权限的数据库角色;数据库角色可以添加,可以定制不同权限
数据库架构,指数据库对象的容器;类似于数据库对象的命名空间,用户通过架构访问数据库对象

  1. 服务器登录名属于某组服务器角色; 一定属于某个角色
  2. 服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限 必须用户映射,才能操作对应的数据库
  3. 数据库用户属于某组数据库角色以获取操作数据库的权限
  4. 数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构
  5. 数据库用户有默认架构,写SQL语句可以直接以“对象名”访问
    6. 非默认架构则要以“架构名.对象名”访问

删除登录名 用户名

drop user  登录名
drop login  用户名

sp_addlogin

sp_addlogin [ @loginame = ] ‘login’
[ , [ @passwd = ] ‘password’ ]
[ , [ @defdb = ] ‘database’ ]
[ , [ @deflanguage = ] ‘language’ ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] ‘encryption_option’ ]
参数
[@loginame =] ‘login’
登录的名称。login 的数据类型为 sysname,没有默认设置。

[@passwd =] ‘password’

登录密码。password 的数据类型为 sysname,默认设置为 NULL。sp_addlogin 执行后,password 被加密并存储在系统表中。

[@defdb =] ‘database’

登录的默认数据库(登录后登录所连接到的数据库)。database 的数据类型为 sysname,默认设置为 master。
【默认数据库 一般是master ,如你你改动,必须 该用户可以访问你该的默认数据库,不然不能登录成功】

[@deflanguage =] ‘language’

用户登录到 SQL Server 时系统指派的默认语言。language 的数据类型为 sysname,默认设置为 NULL。如果没有指定 language,那么 language 被设置为服务器当前的默认语言(由 sp_configure 配置变量 default language 定义)。更改服务器的默认语言不会更改现有登录的默认语言。language 保持与添加登录时所使用的默认语言相同。

[@sid =] sid

安全标识号 (SID)。sid 的数据类型为 varbinary(16),默认设置为 NULL。如果 sid 为 NULL,则系统为新登录生成 SID。尽管使用 varbinary 数据类型,非 NULL 的值也必须正好为 16 个字节长度,且不能事先存在。SID 很有用,例如,如果要编写 SQL Server 登录脚本,或要将 SQL Server 登录从一台服务器移动到另一台,并且希望登录在服务器间具有相同的 SID 时。

[@encryptopt =] ‘encryption_option’

指定当密码存储在系统表中时,密码是否要加密。encryption_option 的数据类型为 varchar(20),可以是下列值之一。


向该用户授予访问某数据库的权限
use 数据库名
exec sp_grantdbaccess ‘用户名’ -----映射

–首先使用sp_addlogin添加登录 exec sp_addlogin ‘用户名’,‘密码’,默认数据库 ------添加用户
–然后向该用户授予访问某数据库的权限 use 数据库名 exec sp_grantdbaccess ‘用户名’ -----映射
–最后授予该用户的具体权限,比如可以对某个表进行select操作,这要根据该用户需要的权限来设定
use 数据库名 grant select on 表名 to 用户名
比如要新建帐户appuser,密码为pass,并允许该用户对appdb数据库的test表有select 和update权限,那么依次执行
exec sp_addlogin ‘appuser’,‘pass’,‘appdb’
go
use appdb exec sp_grantdbaccess ‘appuser’
go
use appdb
grant select,update on test to appuser
go
GRANT 名称 GRANT — 赋予一个用户,一个组或所有用户访问权限 语法
GRANT privilege [, …] ON object [, …] TO
{
PUBLIC | GROUP group | username
}
输入 privilege 可能的权限有:
SELECT 访问声明的表/视图的所有列/字段.
INSERT 向声明的表中插入所有列字段.
UPDATE 更新声明的表所有列/字段.
DELETE 从声明的表中删除所有行.

GROUP group 将要赋予权限的组 group .
username 将要赋予权限的用户名.
PUBLIC 是代表所有用户的简写.

创建角色,用户,权限
/–示例说明
示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test
随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test
同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限
最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。
经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。
/
USE pubs
–创建角色 r_test
EXEC sp_addrole ‘r_test’
–授予 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
–授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test
–添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin ‘l_test’,‘pwd’,‘pubs’
–为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess ‘l_test’,‘u_test’
–添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember ‘r_test’,‘u_test’
–拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test
/–完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限–/
–从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess ‘u_test’
–删除登录 l_test
EXEC sp_droplogin ‘l_test’
–删除角色 r_test
EXEC sp_droprole ‘r_test’
sp_adduser:可以理解为增加User,
和sp_grantdbaccess:理解为授予连接权限。
使用sp_adduser为一个数据库增加一个用户,
其实sp_grantdbaccess存储过程能增加用户,是因为在其中也使用sp_adduser,但是在安全性上要比sp_adduser好,因为它能建立一个安全性连接。如果仅仅从添加的用户来说,两者创建的用户没有设么本质的区别









SQL SERVER 服务器登录名、数据库用户名、服务器角色、数据库角色、DENY、sp_addlogin ETC.相关推荐

  1. SQL Server 2005登录名,用户名,角色,架构之间的关系

    SQL Server 2005对2000进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示. ...

  2. SQL Server 创建登录名和用户名【详细介绍】

    在SQL Server中新建登录名和数据库用户既可通过SSMS可视化窗口创建,也可通过SQL语句创建~

  3. sql登录名和用户名_通过分配角色和权限来移动或复制SQL登录名

    sql登录名和用户名 This article speaks to, how to copy SQL Logins on the new server with Server Level roles ...

  4. SQL Server使用登录名连接数据库报错:18456

    文章目录 解决办法 错误:18456是因密码或用户名错误而使身份验证失败,如果用户名密码正确,则该登录名没有连接数据库引擎权限,登录权限也被无情剥夺了,开启服务器[SQL Server身份验证模式]即 ...

  5. SQL Server还原数据库后如何同步登录名和用户名

    SQL Server数据库在完成备份还原后,经常会发现登录用户失败,这是就需要做登录名和用户名的同步操作. SP_CHANGE_USERS_LOGIN存储过程可以通过重新映射登录名和数据库名来解决这个 ...

  6. SQL server 登录名与用户名

    登录名与用户名的区别: 登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源.每个登录名的定义存放在master数据库的syslogins表中 用户名:一个 ...

  7. sql server 登录名和用户名的区别和联系

     sql server 登录名和用户名的区别和联系  总括:登录名可以理解为进入整个大楼的钥匙,用户名可以理解为一个房间的钥匙,这里所说的大楼就是sql server服务器,而房间就是这个sql se ...

  8. Sql Server关于权限、角色以及登录名、用户名的总结

    官方文档https://docs.microsoft.com/zh-cn/sql/t-sql/statements/grant-transact-sql?view=sql-server-2017 权限 ...

  9. SQL Server 创建用户时报错:15023 用户,组或角色'XXX'在当前数据库中已存在

    今天遇到了这个问题,将找到的解决方案做了个整理,如下: 一.原因分析 sql server数据库从一台机转移到另一台机时,登录名没转移,或者只删除了登录名.这种情况将会产生"孤立用户&quo ...

最新文章

  1. 皮一皮:杯子不要买太奇怪的...
  2. 音视频技术开发周刊 | 220
  3. 【单调栈 动态规划】bzoj1057: [ZJOI2007]棋盘制作
  4. Linux搜索无线网络命令,Linux操作系统的无线网络命令
  5. linux+nginx+php+mysql安装及配置
  6. 灰度共生矩阵GLCM及其matlab实现
  7. SLAM技术与市场杂谈
  8. 精曲的竖曲线4800计算程序,可以计算直线与竖曲线通杀
  9. nexus安装过程中遇到的一些问题
  10. 双因素认证(two-factor authentication)
  11. 使用ETE包让系统发育树(进化树)和多重序列比对(MSA)“同框”
  12. 3月盘点众厂商 云计算劳模大奖颁给谁
  13. 2023计算机考研408参考答案
  14. 关于contiki中的Ctimer和Etimer
  15. android 权限整理
  16. 写在2021的尾巴上
  17. UE4-简单的FPS项目制作(B站视频笔记)P1P2
  18. VS2010运行DirectShow的错误—typedef void * POINTER_64 PVOID64
  19. python-docx 合并单元格
  20. 数据屏蔽:静态与动态

热门文章

  1. 求职面试中怎样谈自己的缺点
  2. 力扣-患某种疾病的患者
  3. 怎么翻译整个PDF文件
  4. 被手机“绑架”又不能完全指望手机的柔宇科技,上市之后会是一片坦途吗?
  5. Richardson外推法计算给定点处的一阶和二阶导数
  6. 抛物型偏微分方程的Crank-Nicolson 方法; Richardson 外推法;紧差分法
  7. java 后台管理模板_后台管理系统模板 - WEB源码|JSP源码/Java|源代码 - 源码中国
  8. 史上最简单的Git入门教程
  9. 大数据运维工程师 base 上海
  10. WorkBench简介