小工具知识网

当前位置: 首页 > 行业知识 > 【自学笔记】在SQL Server中创建用户角色及授权(使用SQL语句)更新2023.07.06

行业知识

【自学笔记】在SQL Server中创建用户角色及授权(使用SQL语句)更新2023.07.06

2026-11-02 14:29:57 来源:互联网转载
--更新2023.07.06--1. 首先在 SQL Server 服务器级别,创建登陆帐户(create login)--2. 创建数据库用户(create user):--3. 通过加入数据库角色,赋予数据库用户“dba”权限:--创建登陆帐户(create login)create login dba with password='abcd1234@', default_database=AliSysDB--这时候,dba 帐户就可以连接到 SQL Server 服务器上了。但是此时还不能 访问数据库中的对象--(严格的说,此时 dba 帐户默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象)。--要使 dba 帐户能够在 AliSysDB 数据库中访问自己需要的对象, 需要在数据库 AliSysDB 中建立一个“数据库用户”,--赋予这个“数据库用户” 某些访问权限,并且把登陆帐户“dba” 和这个“数据库用户” 映射起来。--创建“数据库用户”和建立映射关系只需要一步即可完成--为登陆账户创建数据库用户(create user),在AliSysDB数据库中的security中的user下可以找到新创建的dbacreate user dba for login dba with default_schema=dbo--通过加入数据库角色,赋予数据库用户“db_owner”权限exec sp_addrolemember 'db_owner', 'dba'----让 SQL Server 登陆帐户“dba”访问多个数据库use DBErpcreate user dba for login dba with default_schema=dboexec sp_addrolemember 'db_owner', 'dba'-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>--删除数据库用户:drop user dba--删除 SQL Server登陆帐户:drop login dba--禁用登陆帐户alter login dba disable--启用登陆帐户alter login dba enable--登陆帐户改名alter login dba with name=dba_tom--登陆帐户改密码:alter login dba with password='aabb@ccdd'--数据库用户改名:alter user dba with name=dba_tom--更改数据库用户 defult_schema:alter user dba with default_schema=sales
--使用T-SQL创建用户--添加角色use AliSysDBgosp_addlogin  'test_db','123456','AliSysDB' gosp_addsrvrolemember   'test_db','sysadmin'   gosp_adduser 'test_db','test_db','db_owner'go  
--使用存储过程来完成用户创建--下面一个实例来说明在sqlserver中如何使用存储过程创建角色,重建登录,以及如何为登录授权等问题USE DBErp --创建角色 r_testEXEC sp_addrole 'r_test'--添加登录 l_test,设置密码为pwd,默认数据库为pubsEXEC sp_addlogin 'l_test','a@cd123','DBErp'--为登录 l_test 在数据库 pubs 中添加安全账户 u_testEXEC sp_grantdbaccess 'l_test','u_test'--添加 u_test 为角色 r_test 的成员EXEC sp_addrolemember 'r_test','u_test'--授予角色 r_test 对 效期查询 表的所有权限GRANT ALL ON 效期查询 TO r_test--ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。--如果要收回权限,可以使用如下语句。(可选择执行)revoke all on 效期查询 from r_test--授予角色 r_test 对 实时库存查询 表的 SELECT 权限GRANT SELECT ON 实时库存查询 TO r_test--用l_test登陆,发现可以查询Sales.Orders和实时库存查询两张表select * from 效期查询select * from 实时库存查询--拒绝安全账户 u_test 对 效期查询 表的 SELECT 权限DENY SELECT ON 效期查询 TO u_test--重新授权GRANT SELECT ON 效期查询 TO u_test--从数据库中删除安全账户,failedEXEC sp_revokedbaccess 'u_test'--删除角色 r_test,failedEXEC sp_droprole 'r_test'--删除登录 l_test,successEXEC sp_droplogin 'l_test'--revoke 与 deny的区别--revoke:收回之前被授予的权限--deny:拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员资格继承权限。比如UserA所在的角色组有inset权限,但是我们Deny UserA使其没有insert权限,那么以后即使UserA再怎么到其他含有Insert的角色组中去,还是没有insert权限,除非该用户被显示授权。--简单来说,deny就是将来都不许给,revoke就是收回已经给予的。GRANT INSERT ON TableA TO RoleAGOEXEC sp_addrolemember RoleA, 'UserA' -- 用户UserA将有TableA的INSERT权限GO REVOKE INSERT ON TableA FROM RoleA -- 用户UserA将没有TableA的INSERT权限,收回权限GO GRANT INSERT ON TableA TORoleA --重新给RoleA以TableA的INSERT权限GO  DENY INSERT ON TableA TO UserA -- 虽然用户UserA所在RoleA有TableA的INSERT权限,但UserA本身被DENY了,所以用户UserA将没有TableA的INSERT权限。

使用SSMS数据库管理工具创建用户登录,这个可视化操作比起用sql语句来创建是在是简单多了

一丶创建用户

登录数据库,在安全性→登录名(鼠标右击)→新建登录名

在弹出新建登录名窗口的“常规”中,输入登录名和密码,密码一定要设置复杂一点,要不然会报错,如果想设置简单的密码也是可以的,把“强制实施密码策略”√去掉就行了。

二丶设置管理员权限

点击左边选择页中的“服务器角色”,来给新建用户授予权限,在右侧的服务器角色面板中,勾选public

注意:如果建立的账号不需要具备系统管理员的权限时,则不要勾选sysadmin 项!

服务器角色    说明

sysadmin    执行SQL Server中的任何操作

serveradmin    配置服务器设置

setupadmin    安装复制和管理扩展过程

securityadmin    管理登录和CREATE DATABASE的权限以及阅读审计

processadmin    管理SQL Server进程

dbcreator    创建和修改数据库

diskadmin    管理磁盘文件

三丶设置非管理员权限

点击左边选择页中的“用户映射”,选择用户可以登录的数据库、选择用户拥有的登录数据库的权限。并在该面板下面的【数据库角色成员身份】中勾选db_owner项!

注意:如果给你个无系统管理权限的账号指定管理一个数据库时,则一定要勾选db_owner项!否则该账号无法看到该数据库中的任何数据表!

让新建的用户dba对多个数据库都拥有权限,

接着上步继续做,再点其他数据库,然后在勾选下面相应的权限即可。这样一次性就能对用户赋予多个数据库不同的权限。

'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' --不能更改数据库内任何用户表中的任何数据

 

4、点击左边选择页中的“安全对象”,选择安全对象后,然后再授权。

四丶进入【状态】设置连接引擎授权

最后点击“状态”,授予连接到数据库引擎,登录名启用,最后点击确定就可以了

无法登陆情况

请检查数据库属性页【安全性】是否启用 SQL Server 和 windows 验证模式;

上一篇:云服务器怎么模拟云手机?

下一篇:边音l怎么书写?