SQL Server遗失管理权限账号密码怎么办?
假如一個SQL Server實例只允許“SQL身份認(rèn)證”模式登錄數(shù)據(jù)庫,而糟糕的是你忘記了sa的密碼(sa出于安全考慮應(yīng)該被禁用,這里僅僅為了描述問題)或其它具有sysadmin角色的登錄名的密碼?個人就遇到這樣一個案例,HK一同事在一臺測試服務(wù)器安裝了一個測試用途的SQL Server數(shù)據(jù)庫,然后這個同事離職前沒有交接這個測試服務(wù)器任何信息。那現(xiàn)在就麻煩了。我沒有任何權(quán)限,我如何獲取sysadmin的權(quán)限呢?或者還有比較多的場景需要你獲取數(shù)據(jù)庫的sysadmin權(quán)限,例如你想干點壞事.... 其實這個問題也不難,只要你有這個SQL Server數(shù)據(jù)庫的所在的服務(wù)器的操作系統(tǒng)管理員權(quán)限。
?
首先說明一下,下面腳本在SQL Server 2012、2014環(huán)境下都測試過,下面來一起看看如何在只有操作系統(tǒng)的管理員權(quán)限的情況下獲取數(shù)據(jù)庫的sysamdin權(quán)限。
?
其實在闡述這個問題前,可能要先說一下賬號([builtin\administrators]),在SQL Server 2005的版本中,數(shù)據(jù)庫中[builtin\administrators]登錄名默認(rèn)擁有sysadmin角色,所以,如果是SQL Server 2005數(shù)據(jù)庫,只要你有操作系統(tǒng)的管理員權(quán)限,那么其實你就可以以Windows身份認(rèn)證登錄數(shù)據(jù)庫(前提是服務(wù)器允許Windows身份認(rèn)證登錄),登錄后修改sa賬號密碼即可,但是后續(xù)版本中都剔除了內(nèi)置系統(tǒng)帳戶([builtin\administrators])。那么通常的方法如何做呢?
?
其實只要你有操作系統(tǒng)的管理員權(quán)限,那么借助sqlcmd工具,很容易也很簡單就能獲取擁有sysadmin角色的賬號。
?
1:首先必須單用戶模式啟動SQL Server實例(注意,要以管理員權(quán)限運行cmd窗口,否則可能遇到權(quán)限問題),否則sqlcmd就會遇到類似這樣的問題
?
C:\Windows\system32>sqlcmd
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : Login failed for user '
xxx\xxxx’..
C:\>net stop mssqlserverThe 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登錄數(shù)據(jù)庫
C:\>?C:\>?C:\>sqlcmd -E?1> ALTER LOGIN sa WITH PASSWORD='qWeR123456';?2> GO?1>?
參數(shù)-E 表示 [-E trusted connection]? 默認(rèn)即是-E,如上所示,進(jìn)去修改sa的密碼,然后登錄測試發(fā)現(xiàn)sa被禁用了,使用SQL語句允許sa登錄即可。如下所示:
?
?
?
?
當(dāng)然你也可以創(chuàng)建一個賬號授予sysadmin角色。完全沒有問題。
?
C:\>sqlcmd -E1> CREATE LOGIN [xxx\xxx] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]2> GO1> ALTER SERVER ROLE [sysadmin] ADD MEMBER [xxx\xxx]2> GO?
或者SQL認(rèn)證賬號
?
C:\>sqlcmd -E1> CREATE LOGIN [test1] WITH PASSWORD=N'Qw123456', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF2> GO1>2>3> ALTER SERVER ROLE [sysadmin] ADD MEMBER [test1]4> GO1>?
?
是否感覺有點太簡單了,太不安全了?? 系統(tǒng)管理員輕松就獲取了數(shù)據(jù)庫的管理員權(quán)限。 這個功能怎么感覺都不太合理!試想,如果系統(tǒng)被入侵了,分分鐘就能獲取數(shù)據(jù)庫的sysadmin權(quán)限。
?
轉(zhuǎn)載于:https://www.cnblogs.com/kerrycode/p/8931386.html
總結(jié)
以上是生活随笔為你收集整理的SQL Server遗失管理权限账号密码怎么办?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果招募生成式AI人才 提供数十个大模型
- 下一篇: my.ini优化mysql数据库性能的十