이전 고객 상담 사례에서는 많은 고객 애플리케이션이 SA 계정을 직접 사용하여 SQL Server에 연결했습니다. 데이터베이스 관리가 조금 더 엄격한 경우 애플리케이션에 이러한 권한을 부여해서는 안 됩니다. 일반적으로 애플리케이션에서는 추가, 삭제, 수정 및 쿼리만 수행하면 되고 DDL 작업은 거의 수행하지 않아도 됩니다. 따라서 "최소 권한 할당"의 원칙이 적용됩니다. "를 따라 계정을 구성해야 합니다. 필요한 권한을 부여하세요.
애플리케이션의 경우 일반적으로 읽기 권한, 쓰기 권한, 저장 프로시저 실행 권한에 대한 최소 권한이 부여됩니다. SQL 인젝션으로 인한 데이터베이스 정보 유출을 방지하기 위해서는 정의 보기 권한을 거부하는 것도 고려해야 합니다. 단, 정의 보기 권한이 거부되면 대량 삽입이 실패하므로 주의할 필요가 있습니다. 전체 권한 정의는 다음과 같습니다.
ALTER ROLE [db_datareader] ADD MEMBER 用户名 ALTER ROLE [db_datawriter] ADD MEMBER 用户名 grant execute to 用户名 deny view definition to 用户名
SQL Server에서 인스턴스 수준은 로그인 이름이고, 데이터베이스 수준은 사용자 이름입니다. 로그인 이름은 생성 후 특정 라이브러리에 매핑될 수 있습니다. . 따라서 로그인 이름, 사용자를 생성하고 해당 권한을 부여하기 위한 완전한 스크립트를 작성했습니다. 스크립트는 다음과 같습니다.
--创建用户的存储过程, --示例EXEC sp_CreateUser 'UserName','rw','DatabaseName' --EXEC sp_CreateUser 'tesefx','r','Test','0xE39CA97EBE03BB4CA5FF78E50374EEBB' CREATE PROC sp_CreateUser @loginName VARCHAR(50) , @IsWrite VarCHAR(3) , @DatabaseName VARCHAR(50), @Sid VARCHAR(100) ='1' AS PRINT('示例:EXEC sp_CreateUser ''UserName'',''rw'',''DatabaseName''') PRINT('示例:EXEC sp_CreateUser ''UserName'',''rwv'',''DatabaseName'',''0xE39CA97EBE03BB4CA5FF78E50374EEBB''') PRINT('r为只读权限,rw为读写权限,rwv为读写加View Definition权限') IF EXISTS ( SELECT name FROM sys.syslogins WHERE name = @loginName ) BEGIN PRINT N'登录名已存在,跳过创建登录名步骤' END ELSE BEGIN DECLARE @CreateLogin NVARCHAR(1000) DECLARE @pwd VARCHAR(50) PRINT @Sid SET @pwd=NEWID() IF(@sid='1') BEGIN SET @CreateLogin = 'CREATE LOGIN [' + @loginName + '] WITH PASSWORD=N''' + @Pwd + ''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;' PRINT N'登录名已创建,密码为:'+@pwd END ELSE BEGIN SET @CreateLogin = 'CREATE LOGIN [' + @loginName + '] WITH PASSWORD=N''' + @Pwd + ''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF,sid='+@Sid+';' PRINT N'已经使用SID创建登录名:'+@loginName END EXEC (@CreateLogin) --DECLARE @sidtemp NVARCHAR(50) --SELECT @sidtemp=sid FROM sys.server_principals WHERE name=@loginName --PRINT(N'登录名为:'+@loginName+N' SID为: 0x'+CONVERT(VARCHAR(50), @sidtemp, 2) ) END DECLARE @DynamicSQL NVARCHAR(1000) --切换数据库上下文 SET @DynamicSQL = N'Use [' + @DatabaseName + ']; ' + 'IF EXISTS(SELECT name FROM sys.database_principals WHERE name='''+@loginName+''') Begin Print(''用户名已存在,跳过创建用户名的步骤'') end else begin CREATE USER [' + @loginName + '] FOR LOGIN ' + @loginName + ' end;IF (''' + @IsWrite + '''=''rw'' or ''' + @IsWrite + '''=''rwv'') BEGIN ALTER ROLE [db_datareader] ADD MEMBER ' + @loginName + ';ALTER ROLE [db_datawriter] ADD MEMBER ' + @loginName + '; END ELSE BEGIN ALTER ROLE [db_datareader] ADD MEMBER ' + @loginName + '; ALTER ROLE db_datawriter DROP MEMBER ' + @loginName + ' ;End;grant execute to ' + @loginName + '; if('''+@IsWrite+'''<>''rwv'') begin deny view definition to ' + @loginName + '; end else begin grant view definition to ' + @loginName + '; end' EXEC (@DynamicSQL)
이 저장 프로시저는 애플리케이션이 연결하는 데 필요한 로그인 이름을 생성하는 데 사용됩니다. 사용자 또는 로그인 이름이 있으면 이 단계를 건너뜁니다. 이 저장 프로시저를 사용하는 예는 다음과 같습니다.
EXEC sp_CreateUser 'UserName','rw','DatabaseNam' EXEC sp_CreateUser 'tesefx','r','Test','0xE39CA97EBE03BB4CA5FF78E50374EEBB'
위 실행의 첫 번째 줄은 다음과 같습니다. 표준 계정을 생성합니다. UserName이라는 계정은 DatabaseNam 라이브러리에 대한 읽기 및 쓰기 권한을 부여하고 생성된 GUID 암호를 반환합니다. 두 번째 저장 프로시저에서는 네 번째 매개 변수인 sid를 사용하여 로그인 이름을 생성합니다. AlwaysOn 또는 미러링 환경에서는 양쪽 로그인 이름의 SID가 동일해야 하므로 이 경우 SID를 사용하여 로그인 이름을 생성하는 방법을 제공합니다.

microsoft sql server是Microsoft公司推出的关系型数据库管理系统,是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理,具有使用方便可伸缩性好与相关软件集成程度高等优点。SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。

SQLServer还是MySQL?最新研究揭秘最佳数据库选择近年来,随着互联网和大数据的快速发展,数据库的选择成为了企业和开发者们面临的一个重要问题。在众多数据库中,SQLServer和MySQL作为两个最为常见和广泛使用的关系型数据库,备受争议。那么,在SQLServer和MySQL之间,到底应该选择哪一个呢?最新的研究为我们揭示了这个问题。首先,让

随着互联网的普及,网站和应用程序的开发成为了许多企业和个人的主要业务。而PHP和SQLServer数据库则是其中非常重要的两个工具。PHP是一种服务器端脚本语言,可以用于开发动态网站;SQLServer是微软公司开发的关系型数据库管理系统,具有广泛的应用场景。在本文中,我们将讨论PHP和SQLServer的开发,以及它们的优缺点和应用方法。首先,让我们

如何使用PDO连接到MicrosoftSQLServer数据库介绍:PDO(PHPDataObjects)是PHP提供的一个访问数据库的统一接口。它提供了许多优点,比如实现了数据库的抽象层,可以方便地切换不同的数据库类型,而不需要修改大量的代码。本文将介绍如何使用PDO连接到MicrosoftSQLServer数据库,并提供一些相关代码示例。步骤

在Web开发中,PHP与MySQL的结合是非常常见的。但是,在某些情况下,我们需要连接其他类型的数据库,例如SQL Server。在本文中,我们将介绍使用PHP连接SQL Server的五种不同方法。

随着互联网的不断发展,数据库的选择愈发重要。在众多的数据库中,SQLServer和MySQL是两个备受瞩目的选项。SQLServer是微软公司开发的关系型数据库管理系统,而MySQL则是一种开源的关系型数据库管理系统。那么在SQLServer和MySQL之间如何选择最佳的数据库方案呢?首先,我们可以从性能方面比较这两个数据库。SQLServer在处理

SQLServer与MySQL对比:哪个数据库更适合高可用性架构?在当今的数据驱动世界中,高可用性是构建可靠和稳定系统的必要条件之一。数据库作为数据存储和管理的核心组件,其高可用性对于企业的业务运转至关重要。在众多的数据库中,SQLServer和MySQL是常见的选择。那么在高可用性架构方面,究竟哪个数据库更适合呢?本文将对二者进行对比,并给出一些建议。

SQLServer和MySQL是目前两个非常流行的关系型数据库管理系统(RDBMS)。它们都是用于存储和管理大规模数据的强大工具。然而,它们在处理大规模数据时有一些不同之处。本文将对SQLServer和MySQL进行比较,重点是它们在大规模数据处理方面的适用性。首先,让我们来了解一下SQLServer和MySQL的基本特点。SQLServer是由微软


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
