假如一个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. github代码clone加速

    这阵子想看看开源项目 MyBatis 的源码,结果使用 git 的 clone 命令怎么也 clone 不下来,我以为是网速慢,上 Google 一搜,原来 Github 的域名被 DNS 污染了,我 ...

  2. CentOS7 Hadoop 3.1.0 编译安装

    1.配置环境变量 JAVA_HOME=/jdk1..0_131 ANT_HOME=/apache-ant- MAVEN_HOME=/apache-maven- FINDBUGS_HOME=/findb ...

  3. solr查询特殊字符的处理

    1. 使用solr的页面功能时,遇到语法错误 2. 确认原因 从lexical error分析时特殊字符的问题. 首先 solr查询有哪些特殊字符? 查找官方文档:http://lucene.apac ...

  4. solr调用lucene底层实现倒排索引源码解析

    1.什么是Lucene? 作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用, ...

  5. Git命令速查

    Alias 下面的只是例子,想改成什么跟随自己的意愿即可. git config --global alias.st status //status 缩写成 st git config --globa ...

  6. 网络协议抓包分析——IP互联网协议

    前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...

  7. Perl面向对象(1):从代码复用开始

    官方手册:http://perldoc.perl.org/perlobj.html 本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象 ...

  8. 对象引用对于非静态的字段、方法、属性Program.Print()是必需的

    在学习重载是以下代码报错: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  9. SVN、CVS、VSS区别

    废话不多说,撸起袖子敲黑板 !~~ #首先向大家简要描述一下SVN与CVS.VSS的介绍与对比: 介绍: 三种都是版本控制软件, 多数用于源代码管理1.CVS(Concurrent Version S ...

  10. JavaSE-基础语法(三)-面向对象

    面向对象 8.类9.对象10.封装11.继承12.多态13.构造器14.super15.this16.接口17.抽象类18.权限修饰符19.内部类