SQL Server遗失管理权限账号密码怎么办?

原文:SQL Server遗失管理权限账号密码怎么办?

假如一个SQL Server实例只允许“SQL身份认证”模式登录数据库,而糟糕的是你忘记了sa的密码(sa出于安全考虑应该被禁用,这里仅仅为了描述问题)或其它具有sysadmin角色的登录名的密码?个人就遇到这样一个案例,HK一同事在一台测试服务器安装了一个测试用途的SQL Server数据库,然后这个同事离职前没有交接这个测试服务器任何信息。那现在就麻烦了。我没有任何权限,我如何获取sysadmin的权限呢?或者还有比较多的场景需要你获取数据库的sysadmin权限,例如你想干点坏事.... 其实这个问题也不难,只要你有这个SQL Server数据库的所在的服务器的操作系统管理员权限。

首先说明一下,下面脚本在SQL Server 2012、2014环境下都测试过,下面来一起看看如何在只有操作系统的管理员权限的情况下获取数据库的sysamdin权限。

其实在阐述这个问题前,可能要先说一下账号([builtin\administrators]),在SQL Server 2005的版本中,数据库中[builtin\administrators]登录名默认拥有sysadmin角色,所以,如果是SQL Server 2005数据库,只要你有操作系统的管理员权限,那么其实你就可以以Windows身份认证登录数据库(前提是服务器允许Windows身份认证登录),登录后修改sa账号密码即可,但是后续版本中都剔除了内置系统帐户([builtin\administrators])。那么通常的方法如何做呢?

其实只要你有操作系统的管理员权限,那么借助sqlcmd工具,很容易也很简单就能获取拥有sysadmin角色的账号。

1:首先必须单用户模式启动SQL Server实例(注意,要以管理员权限运行cmd窗口,否则可能遇到权限问题),否则sqlcmd就会遇到类似这样的问题

C:\Windows\system32>sqlcmd

Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : Login failed for user ‘

xxx\xxxx’..

C:\>net stop mssqlserver
The SQL Server (MSSQLSERVER) service is stopping.

The SQL Server (MSSQLSERVER) service was stopped successfully.

 

 

C:\>net start mssqlserver /m"SQLCMD"

The SQL Server (MSSQLSERVER) service is starting.

The SQL Server (MSSQLSERVER) service was started successfully.

2:然后在另外一个cmd窗口使用sqlcmd登录数据库

C:\>
 

C:\>

 

C:\>sqlcmd -E

 

1> ALTER LOGIN sa WITH PASSWORD=‘qWeR123456‘;

 

2> GO

 

1>

参数-E 表示 [-E trusted connection]  默认即是-E,如上所示,进去修改sa的密码,然后登录测试发现sa被禁用了,使用SQL语句允许sa登录即可。如下所示:

当然你也可以创建一个账号授予sysadmin角色。完全没有问题。

C:\>sqlcmd -E
1> CREATE LOGIN [xxx\xxx] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

2> GO

1> ALTER SERVER ROLE [sysadmin] ADD MEMBER [xxx\xxx]

2> GO

或者SQL认证账号

C:\>sqlcmd -E
1> CREATE LOGIN [test1] WITH PASSWORD=N‘Qw123456‘, DEFAULT_DATABASE=[master], DE

FAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

2> GO

1>

2>

3> ALTER SERVER ROLE [sysadmin] ADD MEMBER [test1]

4> GO

1>

是否感觉有点太简单了,太不安全了?  系统管理员轻松就获取了数据库的管理员权限。 这个功能怎么感觉都不太合理!试想,如果系统被入侵了,分分钟就能获取数据库的sysadmin权限。

原文地址:https://www.cnblogs.com/lonelyxmas/p/9411344.html

时间: 2024-08-11 18:53:41

SQL Server遗失管理权限账号密码怎么办?的相关文章

目录:SQL Server 2014 管理与维护指南

<SQL Server 2014 安装与配置指南> 章节目录 <SQL Server 2014管理与维护> 第1章  实现数据完整性和一致性 1.1  数据完整性 1.2  数据一致性 1.3  阻塞和死锁 第2章  包含数据库 2.1  包含的概念 2.2  实现包含数据库 2.3  包含数据库的排序规则 2.4  迁移到包含数据库 第3章  管理数据库 3.1  修改数据库选项 3.2  数据库的文件类型 3.3  数据库的触发器 第4章  数据库的组织结构 4.1  文件组

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆 解决方法如下 通过windows 身份验证登陆后, 首先选中服务器(右键)->属性 ->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"其次展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用, 并在常规选项中修改密码 确认后重启 sel server sql se

学习 Sql Server 内存管理之术语理解

在学习sql server 内存管理时,看到一些term:memory node,memory clerk,memory object,非常迷惑,在此将自己的理解记录下来,以便后续学习 1,NUMA架构和memory node 内存节点基于硬件 NUMA 创建,memory node是Numa node内的内存块,属于server物理内存的一部分.Memory Node的作用是使得内存的分配由Windows移交到SQL Server OS层面执行. 查看memory node select *

SQL Server 2008管理工具出现 远程过程调用失败0x800706be解决方法

SQL Server 2008管理工具出现 远程过程调用失败0x800706be解决方法 - MSSQL - 次元立方网 - 电脑知识与技术互动交流平台 http://www.it165.net/database/html/201305/3884.html     解决方法 出现此问题是因为在安装 Visual Studio 2012(VS2012) 时,会自动安装 "Microsoft SQL Server 2012 Express LocalDB" 这项服务,导致 SQL Serv

SQL Server Management Studio无法记住密码

用sa账户登录sql server 2008,勾选了“记住密码”,但重新登录时,SQL Server Management Studio无法记住密码. 后来发现,在重新登录时,登录名显示的并非是sa账户,而是其他账户.点击下拉框,发现记录的登录名不止一个.于是尝试清除这些历史记录. 清除SQL Server Management Studio的历史记录很简单,只要删除或重命名文件SqlStudio.bin即可.该文件通常在以下目录: C:\Documents and Settings\Admin

sql server 警报管理,实时监听数据库动向,运筹帷幄之中

原文:sql server 警报管理,实时监听数据库动向,运筹帷幄之中 工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒.懒到谁都不愿意加班,尤其是"义务"加班.即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后出错啊什么的,总得有人看着,这时候就诞生了一种新的工作制度,叫做7*24.顾名思义就是这种岗位实时都得有人看着,这确实是一件让人头疼的事情.虽然说在项目刚上线不可避免的得有7*24,但是我们可以尽量减少7*24的工作量(ps:因为7*24

清除SQL server 记住的用户名和密码

公司更换电脑,清除SQL server 记住的用户名和密码 请按照上图中的位置找到相应的文件SqlStudio.bin,然后把它删除,请放一百个心,这个文件会自动生成的. 需要注意的是,在删除之前一定要关掉SQL SERVER,否则在关掉SQL SERVER 的时候就会自动生成这个文件,原来的信息还是会保存到这个文件里面. 以上是2008版本的, 2005的请看: C:\Users\%username%\AppData\Roaming \Microsoft\Microsoft SQL Serve

SQL Server 动态管理视图(DMVs)

DMV在本地部署的SQL Server中需要VIEW SERVER STATE的权限   和事务有关的DMV sys.dm_tran_active_transactions:返回与您的当前逻辑数据库的事务有关的信息. sys.dm_tran_database_transactions:返回有关用户数据库级事务的信息. sys.dm_tran_locks:返回有关当前处于活动状态的锁管理器资源的信息.向锁管理器发出的已授予锁或正等待授予锁的每个当前活动请求分别对应一行.结果集中的列大体分为两组:资

MSSQL之二 Sql Server中管理库与表

作为数据库开发人员,你负责创建和管理数据库和表.当创建表的时候,维护数据的完整性对你是很重要的.为确保表中的数据是准确的,一致的和可靠的,SQL Server提供了各种你可以应用到表上以增强数据完整性的检查. SQL Server包含各种系统数据库.本章介绍不同类型的系统数据库并且解释如何管理用户定义的数据库和管理用户自定义表. 重点 ?      管理数据库 ?      管理表 ?      SQL Server 2008中的数据类型 预习功课 ?        创建数据库 ?