MSSQL SA Şifresini Kırma

  • SQL Server 2008 R2
  • SQL Server 2012
  • SQL Server 2014
  • SQL Server 2016
  • SQL Server 2017
  • SQL Server 2019

Diyelimki bir DB Admin veya System Admin’siniz. Erişmeniz gereken bir MSSQL Server var ancak gerekli yetkilere sahip bir kullanıcınız yok ve sa şifresini de bilmiyorsunuz.

Bu durumda MSSQL Server’ın yüklü olduğu sunucuya Local Admin yetkili bir hesapla giriş yapmanız gerekmektedir.

Command Promt’a gelip Run as Administartor diyip bağlanıyoruz.

Bağlandığınızda karşınıza aşağıdaki ekran gelmeli en üstte Administrator yazmalı ve imleç C:\Windows\System32 yolunda olmalı.

Eğer sizde böyle gelmedi ise cmd.exe‘nin bulunduğu path’e gidin ve sağ tıklayıp Run as Administrator diyin.

Ardından MSSQL Server servisini durdurmamız gerekiyor.

net stop MSSQLSERVER

Eğer şifresini kırmak istediğiniz SQL Server bir named instance ise MSSQL$instancename şeklinde yazıyoruz.

net stop MSSQL$SQL2019

Ardından SQL Servisini single-user modda çalıştırmamız gerekiyor.

net start MSSQLSERVER /m"SQLCMD"

sqlcmd yazıp sql’e bağlanıyoruz. Sonrasında sa şifresini değiştirme kodunu yazıyoruz.

USE master
GO
ALTER LOGIN sa WITH PASSWORD = N'PAssw0rd!'
GO
EXIT

Ancak belkide SQL Server’da sa kullanıcısı disable edilmiş veya adı değiştirilmiş ve bu adı bilmiyor olabilirsiniz. -sa kullanıcısının adını değiştirmek veya disable etmek güvenlik açısından bir best practice‘dir- O halde sqlcmd diyip yeni bir kullanıcı oluşturup ona sysadmin yetkisi verebiliriz.

USE master
GO
CREATE LOGIN [dbadmin] WITH PASSWORD = N'5Tr0ngP44S'
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [dbadmin]
GO
EXIT

Bir başka durumda ise SQL Server sadece Windows Login’leri kabul edecek şekilde konfigüre edilmiş olabilir. Böyle bir durumda da Domain kullanıcısı ekleyip onu yetkilendirmeniz gerekmektedir.

USE master
GO
CREATE LOGIN [DOMAIN\dba] FROM WINDOWS
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [DOMAIN\dba]
GO
EXIT

Eğer SQL Server veriyonunuz 2008 R2 ise sp_addsrvrolemember prosedürünü kullanmanız gerekmektedir. -named instance a gireken sqlcmd yazdıktan sonra -S parametresi ile sunucu ismi yazılır-

USE master
GO
CREATE LOGIN [dbadmin] WITH PASSWORD = N'Passw0rd!'
GO
sp_addsrvrolemember @loginame = 'dbadmin', @rolename = 'sysadmin'
GO
EXIT

Son olarak SQL Server’ımızı restart ediyoruz.

net stop MSSQLSERVER && net start MSSQLSERVER

Görüldüğü gibi artık sunucuya bağlantı sağlayabiliyoruz.

Yorum bırakın