假如一个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权限。

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

  1. SQL Server Management Studio 的账号密码

    使用“Windows身份验证”方式无法登陆 使用“SQL Server身份验证” 方式无法登陆 解决办法:关闭当前所有服务.通过[Microsoft SQL Server 2008]|[配置工具]|[ ...

  2. Microsoft SQL Server 安全与权限

    Microsoft SQL Server 安全与权限 登陆角色 计算机操作系统用户 --创建Windows身份验证用户 USE [master] GO CREATE LOGIN [计算机名称\计算机用 ...

  3. SQL Server 内存管理

    windows memory:  Memory: Cache Bytes 是系统的working set, 也就是系统使用的物理内存数目. 可以观察Windows用了多少物理内存. 1. System ...

  4. 人人都是 DBA(IV)SQL Server 内存管理

    SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理 ...

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

    工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒.懒到谁都不愿意加班,尤其是"义务"加班.即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后 ...

  6. SQL Server Management Studio无法记住密码

    用sa账户登录sql server 2008,勾选了“记住密码”,但重新登录时,SQL Server Management Studio无法记住密码.   后来发现,在重新登录时,登录名显示的并非是s ...

  7. 理解SQL Server中的权限体系(下)----安全对象和权限

    原文:http://www.cnblogs.com/CareySon/archive/2012/04/12/SQL-Security-SecurableAndPermission.html 在开始阅读 ...

  8. 配置SQL Server 2008管理器

    SQl Server 配置管理器(简称为配置管理器)包含了SQL Server 2008服务.SQL Server 2008网络配置和SQL Native Client配置3个工具,供数据库管理人员做 ...

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

    公司更换电脑,清除SQL server 记住的用户名和密码 请按照上图中的位置找到相应的文件SqlStudio.bin,然后把它删除,请放一百个心,这个文件会自动生成的. 需要注意的是,在删除之前一定 ...

随机推荐

  1. ArcMap中属性字段计算器(Field Calculator)的使用技巧

           很多时候,我们在使用ArcGIS进行属性数据编辑时,需要批量修改某些字段值,这时候ArcGIS提供的属性字段计算器(Field Calculator)就是一把利器.下面我就Field C ...

  2. CSS实例详解:Flex布局

    本文由云+社区发表 本文将通过三个简单的实例,实际应用上篇文章的基础理论知识,展示下Flex布局是如何解决CSS布局问题. 一.垂直居中 这里同时用非flex布局和flex布局两种方式来实现,可以对比 ...

  3. RNN入门(4)利用LSTM实现整数加法运算

      本文将介绍LSTM模型在实现整数加法方面的应用.   我们以0-255之间的整数加法为例,生成的结果在0到510之间.为了能利用深度学习模型模拟整数的加法运算,我们需要将输入的两个加数和输出的结果 ...

  4. JS_正则表达式_使用字符串创建的正则表达式_反斜杠也需要添加转义符

    备注:   使用字符串创建的正则表达式:"\"也需要加转义符: var reg1=new RegExp("\\w+");       这和 直接使用:var r ...

  5. [angularjs] angularjs系列笔记(七)HTML DOM

    AngularJs为HTML DOM元素的属性提供了绑定数据的指令 ng-disabled指令 ng-disabled指令直接绑定数据到HTML元素的disabled属性 ng-show指令 ng-s ...

  6. swoole扩展实现真正的数据库连接池

    php的数据库连接池一直以来都是一个难题,很多从php语言转向java的项目,大多数原因可能都是因为java有更好的连接池实现.php的mysql扩展提供了长连接的API,但在php机器数量较多,规模 ...

  7. 【Linux】nginx常用命令

    相关内容链接 Centos之安装Nginx及注意事项 [nginx]详细配置说明 nginx常用命令 [重新加载配置]sudo nginx -s reload [打开nginx配置]sudo vim ...

  8. 弹性盒模型flex

    一.flex flex是flexible box的缩写,意为“弹性布局”: 定义弹性布局 display:flex; box{ display:flex; } 二.基本定义 我只简单的说一下容器和项目 ...

  9. gridcontrol 添加行删除行

    一.添加行 注意,必须先绑定数据源(可以是一个空的Datatable):然后再执行添加行的动作,否则不会成功: public partial class Form2 : Form { public F ...

  10. DOM技术

    DOM概述 DOM:Document Object Model(文档对象模型)(DOM核心就是 文档变对象,标签也变对象,属性也变对象,反正就是把标记文档拆散) 用来将标记型对象封装成对象,并将标记型 ...