mgm6608美高梅app下载-mgm集团美高梅登录

mgm6608美高梅app下载以独家报道、社区、博客和专题策划等方式引领产业潮流,mgm集团美高梅登录为足球爱好者以及体育爱好者提供足球上网,让你无后顾之忧!,拥有多位香港乐坛红星。

如果使用SSMS的UI界面查看登录名的具体权限的话

日期:2020-03-17编辑作者:mgm集团美高梅登录

以上所述是小编给大家介绍的SQL Server查看login所授予的具体权限问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

mgm6608美高梅app下载,2,检查组的成员

总结

注意:只能在 master 和 tempdb 以外的数据库中执行禁用GUEST帐号的操作,这是因为许多用户都需要以GUEST身份访问master 和 tempdb系统数据库,GUEST用户在master 和 tempdb数据库的权限被严格限制。

--==================================================================================================================-- ScriptName : get_login_rights_script.sql-- Author : 潇湘隐者 -- CreateDate : 2015-12-18-- Description : 查看某个登录名被授予的数据库对象的权限的脚本-- Note : /****************************************************************************************************************** Parameters : 参数说明******************************************************************************************************************** @login_name : 你要查看权限的登录名(需要输入替换的参数)******************************************************************************************************************** Modified Date Modified User Version Modified Reason******************************************************************************************************************** 2018-08-03 潇湘隐者 V01.00.00 新建该脚本。 2019-04-04 潇湘隐者 V01.01.00 Fix掉一个bug,某个表只允许更新某个字段,但是这里显示更新整个表。 2019-09-25 潇湘隐者 V01.02.00 解决只能查看某个用户数据库,不能查看所有数据库的权限问题。 2019-09-25 潇湘隐者 V01.03.00 解决数据库名包含中划线[-], 出现下面错误问题-------------------------------------------------------------------------------------------------------------------Msg 911, Level 16, State 1, Line 1Database 'xxxx' does not exist. Make sure that the name is entered correctly.-------------------------------------------------------------------------------------------------------------------*******************************************************************************************************************/DECLARE @login_name NVARCHAR(32)= 'test1';DECLARE @database_name NVARCHAR(64);DECLARE @cmdText NVARCHAR(MAX);IF OBJECT_ID('TempDB.dbo.#databases') IS NOT NULL DROP TABLE dbo.#databases;CREATE TABLE #databases( database_id INT, database_name sysname);IF OBJECT_ID('tempdb.dbo.#user_db_roles') IS NOT NULL DROP TABLE dbo.#user_db_roles;CREATE TABLE dbo.#user_db_roles( [DB_NAME] NVARCHAR(64) ,[USER_NAME] NVARCHAR(64) ,[ROLE_NAME] NVARCHAR(64));IF OBJECT_ID('tempdb.dbo.#user_object_rights') IS NOT NULL DROP TABLE dbo.#user_object_rights;CREATE TABLE dbo.#user_object_rights( [DATABASE_NAME] NVARCHAR(128), [SCHEMA_NAME] NVARCHAR(64), [OBJECT_NAME] NVARCHAR(128), [USER_NAME] NVARCHAR(32), [PERMISSIONS_TYPE] CHAR(12), [PERMISSION_NAME] NVARCHAR(128), [PERMISSION_STATE] NVARCHAR(64), [CLASS_DESC] NVARCHAR(64), [COLUMN_NAME] NVARCHAR(32), [STATE_DESC] NVARCHAR(64), [GRANT_STMT] NVARCHAR(MAX), [REVOKE_STMT] NVARCHAR(MAX))INSERT INTO #databasesSELECT database_id , nameFROM sys.databasesWHERE name NOT IN ('model') AND state = 0; --state_desc=ONLINE --登录名授予的服务器角色SELECT UserName = u.name , ServerRole = g.name , Type = u.type, Type_Desc = u.Type_Desc, Create_Date = u.create_date, Modify_Date = u.modify_date, DenyLogin = l.denyloginFROM sys.server_role_members m INNER JOIN sys.server_principals g ON g.principal_id = m.role_principal_id INNER JOIN sys.server_principals u ON u.principal_id = m.member_principal_id INNER JOIN sys.syslogins l ON u.name = l.nameWHERE l.name=@login_nameORDER BY u.name,g.name;WHILE 1= 1BEGIN SELECT TOP 1 @database_name= database_name FROM #databases ORDER BY database_id; IF @@ROWCOUNT =0 BREAK; SET @cmdText = N'USE ' + QUOTENAME(@database_name) + N';' +CHAR(10) --登录名授予的数据库角色 SELECT @cmdText += N'INSERT INTO #user_db_roles SELECT DB_NAME() AS [DB_NAME] ,M.NAME AS [USER_NAME] ,R.NAME AS [ROLE_NAME] FROM sys.DATABASE_ROLE_MEMBERS RM INNER JOIN sys.DATABASE_PRINCIPALS R ON RM.ROLE_PRINCIPAL_ID = R.PRINCIPAL_ID INNER JOIN sys.DATABASE_PRINCIPALS M ON RM.MEMBER_PRINCIPAL_ID = M.PRINCIPAL_ID WHERE M.NAME=@p_login_name' + CHAR(10); EXEC SP_EXECUTESQL @cmdText, N'@p_login_name NVARCHAR(32)',@p_login_name=@login_name; SET @cmdText = N'USE ' +QUOTENAME(@database_name) + N';' +CHAR(10); --查看具体对象的授权问题 SELECT @cmdText +=N'INSERT INTO dbo.#user_object_rights ( [DATABASE_NAME] , [SCHEMA_NAME] , [OBJECT_NAME] , [USER_NAME] , [PERMISSIONS_TYPE] , [PERMISSION_NAME] , [PERMISSION_STATE] , [CLASS_DESC] , [COLUMN_NAME] , [STATE_DESC] , [GRANT_STMT] , [REVOKE_STMT] ) SELECT DB_NAME() AS [DATABASE_NAME] , SYS.SCHEMAS.NAME AS [SCHEMA_NAME] , ob.NAME AS [OBJECT_NAME] , SYS.DATABASE_PRINCIPALS.NAME AS [USER_NAME] , dp.TYPE AS [PERMISSIONS_TYPE] , dp.PERMISSION_NAME AS [PERMISSION_NAME] , dp.STATE AS [PERMISSION_STATE] , dp.CLASS_DESC AS [CLASS_DESC] , sc.name AS [COLUMN_NAME] , dp.STATE_DESC AS [STATE_DESC] , dp.STATE_DESC + '' '' + dp.PERMISSION_NAME + '' ON [''+ SYS.SCHEMAS.NAME + ''].['' + ob.NAME + ''] TO ['' + SYS.DATABASE_PRINCIPALS.NAME + ''];'' COLLATE LATIN1_GENERAL_CI_AS AS [GRANT_STMT] , ''REVOKE '' + dp.PERMISSION_NAME + '' ON [''+ SYS.SCHEMAS.NAME + ''].['' + ob.NAME + ''] FROM ['' + SYS.DATABASE_PRINCIPALS.NAME + ''];'' COLLATE LATIN1_GENERAL_CI_AS AS [REVOKE_STMT] FROM SYS.DATABASE_PERMISSIONS dp LEFT OUTER JOIN SYS.OBJECTS ob ON dp.MAJOR_ID = ob.OBJECT_ID LEFT OUTER JOIN SYS.SCHEMAS ON ob.SCHEMA_ID = SYS.SCHEMAS.SCHEMA_ID LEFT OUTER JOIN SYS.DATABASE_PRINCIPALS ON dp.GRANTEE_PRINCIPAL_ID = SYS.DATABASE_PRINCIPALS.PRINCIPAL_ID LEFT OUTER JOIN SYS.columns sc ON ob.object_id = sc.object_id AND sc.column_id = dp.minor_id WHERE SYS.DATABASE_PRINCIPALS.NAME =@p_login_name ORDER BY PERMISSIONS_TYPE;' PRINT(@cmdText); EXEC SP_EXECUTESQL @cmdText, N'@p_login_name NVARCHAR(32)',@p_login_name=@login_name; DELETE FROM #databases WHERE database_name=@database_name;ENDSELECT * FROM tempdb.dbo.#user_db_roles;SELECT * FROM dbo.#user_object_rights;IF OBJECT_ID('TempDB.dbo.#databases') IS NOT NULL DROP TABLE dbo.#databases;IF OBJECT_ID('tempdb.dbo.#user_db_roles') IS NOT NULL DROP TABLE dbo.#user_db_roles;IF OBJECT_ID('tempdb.dbo.#user_object_rights') IS NOT NULL DROP TABLE dbo.#user_object_rights;

Principal是被授予权限的实体,包括login、user、role等,Securable是Principal操作的对象,可以是table、view、SP、函数等,也可以是login、user、role等对象;有时Principal会作为Securable,被Principal操纵,也就是说,Principal 是抽象意义上的安全主体,可以向安全主体授予权限,Principal分为Server level和Database level,最重要的两个Principal是Login和User,他们的区别是:

在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,如果使用SSMS的UI界面查看登录名的具体权限的话,用户数据库非常多的话,要梳理完它所有的权限,操作又耗时又麻烦,个人十分崇尚简洁、高效的方法,反感那些需要大量手工操作的UI界面操作方式,哪怕就是脚本,如果不能一次搞定,手工多操作几次(例如,切换数据库),都是不可接受的。最近遇到这个需求,就完善了一下之前的脚本get_login_rights_script.sql,输入登录名参数,将这个登录名所拥有的服务器角色、数据库角色、以及所授予具体对象的相关权限使用脚本查询出来,脚本分享如下:

如果创建Windows域登录,映射到一个Windows域账户,登录名必须使用Windows域格式: [<domainName><login_name>].

在创建新的用户时,没有指定用户默认的架构,有三种处理方式:

CREATE USER [Domain1WindowsUserBarry] 
FOR LOGIN [Domain1WindowsUserBarry];
use database_name
go
CREATE USER [Domain1WindowsGroupManagers] 
FOR LOGIN [Domain1WindowsGroupManagers];

mgm集团美高梅登录,SQL Server用户GUEST的简要介绍

1,列出组的所有成员

CREATE LOGIN login_name 
WITH PASSWORD = { 'password' }
,DEFAULT_DATABASE = database
CREATE USER user_name 
FOR LOGIN login_name 
WITH DEFAULT_SCHEMA = schema_name 

Grants permissions on a securable to a principal

EXECUTE AS Clause (Transact-SQL).aspx)

2,创建Windows域登录

  • dbodatabase owner的简称):是数据库的所有者(Owner),SQL Server把固定服务器角色 sysadmin 的成员,固定数据库db_owner角色的成员,sa登陆,都映射到数据库用户 dbo上。
  • guest:是顾客,SQL Server 允许任何没有映射到数据库用户的有效登陆(Login),使用guest账户登陆数据库。在登陆数据库之前,要求dbo分配权限给guest, 一般给他查看的权限select。
  • Login是登陆SQL Server的凭证,验证方式有两种,Windows 验证和SQL Server 验证。
  • User用于访问数据库,使用Login登陆到SQL Server实例之后,必须映射到User,才能访问数据库。
  • Login提供登录Server的帐号和密码,User用于访问数据库,Role是权限的集合,控制User访问的资源。User只有担当某一个角色或具有某些权限,才能访问数据库。
  • 创建Login之后,该Login能够登录到SQL Server实例,但是,仅仅被授予Public角色,在访问数据库时,必须基于Login创建相应的数据库用户(User),Login和User通过SID关联。

在SQL Server中,通常情况下,User的创建都是基于master 数据库中的Login,该Login的来源有三种:基于Windows 域用户,Windows 域用户组,或SQL Server 验证。

根据验证类型,Login分为SQL Server登录和Windows域登录,在创建登录时,可以设置默认数据库(Default Database),指定Login登录的默认数据库,默认值是master数据库。

参数解释:

Login和User最基本的区别是Login用于控制用户是否有权限登陆SQL Server实例,User用于用户控制是否有权限访问数据库:

在当数据库中,查看某一个Security Group的所有成员:

一旦启用guest用户,所有可以登陆到SQL Server的Login,都可以使用guest身份来访问数据库,并拥有guest用户的权限。可以通过命令禁用guest用户:

CREATE LOGIN WanidaBenshoof 
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2012;
go
CREATE USER Wanida 
FOR LOGIN WanidaBenshoof 
WITH DEFAULT_SCHEMA = Marketing;

通过执行 REVERT 命令退出权限模拟,返回到用户原始的安全上下文中:

另外两个特殊的用户:INFORMATION_SCHEMA 和 sys,每个数据库都包含这两个用户,这两个用于是数据库引擎内部使用,不能被修改和删除。

3,创建用户名,基于Windows 域登录** **

一,创建Login

REVERT;
REVOKE CONNECT FROM GUEST;
select is_member('domaingroup')

本文由mgm6608美高梅app下载发布于mgm集团美高梅登录,转载请注明出处:如果使用SSMS的UI界面查看登录名的具体权限的话

关键词:

恢复的数据库此时处于脱机状态,那么要如何正

前言 今天恢复某个数据库时出现如下的错误: 你无法创建一个相同的用户并mapping这个用户到数据库,并且你无法删除...

详细>>

2.解压到你想安装的地方,1、解压放到指定文件

1.因为系统重装 又双叒叕开始了装myql数据库 mysql5.7.19 zip 详细安装过程和配置,mysql5.7.19zip MySQL v5.7.19 官方正式版(3...

详细>>

一、创建用户和授权,但在使用过程中

引言 前言 一、创建用户和授权 用SQLyog连接MySQL8.0(社区版:mysql-installer-community-8.0.15.0.msi),出现错误2058(Plugincaching_...

详细>>

第三范式确保主键列之间没有传递函数依赖关系

1 概述   分析: 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确...

详细>>