как узнать пароль пользователя sa sql server
Как узнать пароль пользователя sa sql server
Всем привет, сегодня расскажу как изменить или сбросить пароль sa sql сервера. Напомню sa это логин пользователя в MS SQL, имеющий по умолчанию самые высокие привилегии, сама учетка локальная, зачастую даже выключенная, но тем не менее часто используемая. Может получиться такая ситуация, что вы забыли от нее пароль и тем самым потеряли доступ к базам данных, сегодня вы научитесь это обходить и восстанавливать доступ до ваших БД.
И так у вас есть MS SQL, как установить sql я уже рассказывал, кто не знает посмотрите. У вас задача сменить пароль для пользователя sa sql.
Пароль sa по умолчанию
Сменить пароль sa в sql через графический интерфейс
Начнемс, откройте пуск и идите по пути Все программы > Microsoft SQL Server 2012 R2 > Среда SQL Server Management Studio
Либо вы можете открыть командную строку и ввести там ssms.
Не важно какой способ вы выбрали эффект будет один и тот же у вас откроется SQL Server Management Studio. Но второй способ явно быстрее.
По умолчанию стоит проверка подлинности Windows, что означает, что вы сможете войти только с локальной учетной записью Windows или доменной, главное чтобы были права.
Как видите, учетная запись sa по умолчанию отключена, но это не помешает вам сменить ей пароль.
ms sql позволяет сбросить пароль sa через ее свойства, для этого щелкаете правым кликом и выбираете свойства из контекстного меню.
На вкладке общие вы увидите, поле для ввода нового пароля, единственное учтите, что если стоит галка Требовать использование политики паролей, вам придется придумать стойкий пароль отвечающий требованиям безопасности, а именно
Если галку снять, то можно задать что угодно, я задал например от 1 до 6. Как видите сменить пароль sa в sql, проще паренной репы.
Единственное, если вы хотите использовать учетную запись sa, то ее нужно включить, для этого перейдите в пункт состояние и укажите Имя входя Включено.
Еще нюанс, вы же помните, что у вас стоит проверка подлинности Windows, а это значит, что нам это не подходит для sa. Щелкнем правым кликом по названию сервера, вверху иерархии и выберем свойства.
На вкладке безопасность, выберем вариант Проверка подлинности SQL Server и Windows. Теперь вы можете заходить с помощью пользователя sa в sql.
Если при попытке войти Management Studio выдает ошибку 233, что подключение к серверу успешно установлено, но затем произошла ошибка при входе, то сделайте следующее.
Откройте Пуск > Панель управления > Администрирование > Службы и перезапустите службу SQL Server.
Как видите, теперь я успешно залогинился.
Сменить пароль sa в sql через командную строку
Чтобы в sql сбросить пароль sa через командную строку воспользуйтесь вот такими командами.
Данной командой вы увидите все доступные сервера MS SQL их SPN
Далее вводите команду
Если вылезет сообщение Password validation failed. The password does not meet Windows policy requirements because it is too short. То задайте более строгий пароль.
Все после этого вы сбросите пароль sa в sql.
Еще вариант использования osql это вот так
затем мы пытаемся подключиться под доверенной учетной записей ОС
И последний рубеж
ALTER LOGIN SA WITH PASSWORD= ‘new_password’
она заменит пароль на new_password
С помощью программы Asunsoft SQL Password Geeker
Есть утилита Asunsoft SQL Password Geeker, к сожалению платная, но способная выполнить поставленную задачу. Запускаем ее жмем Browse далее идем по пути C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA и открываем master.mdf
теперь, чтобы сбросить пароль sa в sql, выберите его и нажмите Reset.
Сменить пароль sa в монопольном режиме
Есть еще четвертый способ поменять пароль от sa, и заключается он в запуске MS SQL в однопользовательском режиме (single-user mode). Что нам потребуется.
Первое это останавливаем MS SQL Server, можно через службы, а можно и из командной строки
Далее открываете реестр Windows и переходите в ветку
Теперь запускаете MS SQL командой
Теперь SQL запущен в однопользовательском режиме и позволяет любому члену локальной группы администраторов компьютера подсоединяться к экземпляру SQL Server с правами sysadmin, но нужно SQL об этом сказать. Посмотреть режим работы можно в свойствах службы.
В командной строке пишем
sqlcmd.exe: EXEC sp_addsrvrolemember ‘имя сервера\имя пользователя’, ‘sysadmin’
Забыт пароль на учетную запись SA
Всякое бывает и всякое не бывает, но лучше иметь проработку на будущее чтобы не метаться потом, с вопросом — А как? Так вот сейчас я разберу давно волновавший меня вопрос, что делать если на сервере базы данных MS SQL Server 2008 R2 который достался Мне в наследство от предыдущего системного администратора не оставил вообще никаких паролей для подключения в оснастку управления именуемую как SQL Management Studio. Конечно оно все работает до поры до времени, но вот это время всегда приходится на такой парадокс:
Все обычно падает в пятницу, а в понедельник, что не упало в пятницу.
Я же этого всячески избегаю и прорабатываю постоянно сценки и шаги по восстановлению и резервированию если что-то пойдет не так.
Что можно узнать из развернутого?
Start — Control Panel — Administrative Tools — Services, служба относящаяся к сервису MSSQL — SQL Server (MSSQLSERVER) при открытии ее свойств (Properties) и перехода на вкладку Log On работает от имени системной учетной записи. Это хорошо. Теперь в любое время когда у Вас запланированы регламентные работы делаем так, переопределяем запуск данной службы от имени учетной записи с правами (обязательно) администратора на этой системе, но сперва конечно же создаем пользователя:
Start — All Programs — Accessories — запускаем Command Prompt с правами администратора и создаем пользователи и даем ему права локального администратора:
C:\Windows\system32>net user ekzorchik 712mbddr@ /add
The command completed successfully.
C:\Windows\system32>net localgroup Administrators ekzorchik /add
The command completed successfully.
C:\Windows\system32>exit
Теперь во вкладке Log On свойств службы SQL Server меняем от имени кого будет происходить запуск службы как показано на представленном скриншоте ниже:
Confirm password: 712mbddr@
Следом последует окно с текстом:
The new logon name will not take effect until you stop and restart the service
По такому же принципу проделываем и для службы SQL Server Agent от имени кого запускать данную службу.
Ну все правильно изменения применятся когда служба будет остановлена, а после запущена.
C:\Windows\system32>net stop SQLSERVERAGENT
The SQL Server Agent (MSSQLSERVER) service is stopping..
The SQL Server Agent (MSSQLSERVER) service was stopped successfully.
C:\Windows\system32>net stop MSSQLSERVER
The SQL Server (MSSQLSERVER) service is stopping.
The SQL Server (MSSQLSERVER) service was stopped successfully.
C:\Windows\system32>net start SQLSERVERAGENT
The SQL Server Agent (MSSQLSERVER) service is starting.
The SQL Server Agent (MSSQLSERVER) service was started successfully.
Затем делаю Logoff, а потом Logon в систему под уже созданной локальной учетной записью ekzorchik. Открываю оснастку SQL Management Studio:
Start — All Programs — Microsoft SQL Server 2008 R2 — SQL Server Management Studio и авторизуюсь с использованием Windows Authentication
Нажимаю Connect, но в ответ вместо успешно входа получаю ошибку:
Делаю вывод что не прокатит такой фокус, вспоминая что еще можно сделать, вот в Ubuntu как сбрасываю пароль на учетную запись суперпользователя root в mysql я захожу в однопользовательский режим, интересно а тут такое есть.
Возвращаю все как было, т. е. Запуск службы от имени системы
Чтение документации на официальном сайте Microsoft привело меня вот к таким вот действиям по сбросу пароля на учетную запись SA:
Запускаю оснастку SQL Server Configuration Manager:
Start — All Programs — Microsoft SQL Server 2008 R2 — Configuration Tools — SQL Server Configuration Manager, затем останавливаю сервис SQL Server (MSSQLSERVER)
После чего остановленного сервиса открываю через правый клик его свойства (Properties), тут переключаюсь на вкладку Advanced (Расширенные) и в строке:
Startup Parameters после: -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Теперь запускаю службу для применения настроек. Если по службам SQL в оснастке управления все хорошо, служба запустилась то переходим к следующему этапу.
Открываю консоль командной строки с правами администратора:
Start — All Programs — Accessories — запускаем Command Prompt с правами администратора
C:\Windows\system32>sqlcmd
1> create login recovery with password=’712mbddr@’
2> go
1> sp_addsrvrolemember ‘recovery’,’sysadmin’
2> go
1> quit
Снова останавливаю сервис SQL Server (MSSQLServer), запускаю свойства, перехожу на вкладку Advanced и убираю добавленный параметр в запуске и запускаю сервис снова.
Теперь пробую авторизоваться
Нажимаю Connect
Что теперь? А просто изменяем пароль sql учетной записи sa как и планировалось, а текущая останется на всякий случай:
(local) (SQL Server 10.50.1600 — recovery) — Security — Logins — выделяю учетную запись sa и через правый клик Properties ввожу новый пароль:
Confirm password: 712mbddr@@
И нажимаю OK. Разлогиниваюсь и проверяю что могу подключиться под учетной запись SQL:
File — Disconnect Object Explorer
File — Connect Object Explorer…
Нажимаю Connect и вуаля все получилось, как и было задумано.
На заметку: Но все можно проделать и из командной строки:
C:\Windows\system32>net stop mssqlserver
The SQL Server (MSSQLSERVER) service is stopping.
The SQL Server (MSSQLSERVER) service was stopped successfully.
C:\Windows\system32>net start mssqlserver /mSQLCMD
The SQL Server (MSSQLSERVER) service is starting.
The SQL Server (MSSQLSERVER) service was started successfully.
C:\Windows\system32>sqlcmd
Теперь я еще больше знаю по SQL Server 2008 R2 на всякий непредвиденный случай, вдруг у нас в отделе кто-то возьмет и намеренно все поменяет не предупредив ни кого. Задача поставленная в самом начале данной заметки выполнена. На этом я прощаюсь, с уважением автор блога — Олло Александр aka ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще 🙂
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Расшифровка сохранённых паролей в MS SQL Server
Давным-давно, в далёкой галактике, пред-предыдущий администратор вашего SQL Server задал в нём linked server, используя специально для этой цели созданный аккаунт со сгенерированным паролем. Теперь вам с этим линком нужно что-то сделать, например перенести его на другой SQL Server; но просто так это не сделать, потому что никто не знает пароля от того аккаунта. Знакомая ситуация?
Хотя MSSQL не хранит пароли для своих аккаунтов, а хранит только их хэши, — с linked server-ами так не получится, потому что для успешной аутентикации перед внешним сервером нужно обладать паролем в открытом виде. Пароли для linked server-ов хранятся в зашифрованном виде в таблице master.sys.syslnklgns :
Но не всё так просто. Во-первых, эта таблица недоступна из обычного SQL-соединения, а доступна только из Dedicated Administrative Connection. На DAC накладываются существенные ограничения: открыть DAC может только пользователь с привилегией sysadmin, и одновременно к одному серверу может быть открыто только одно DAC. Если у вас есть права локального администратора на сервере, но вы не можете войти в MSSQL с правами sysadmin, то есть обходной путь — заходить не из-под своего аккаунта, а из-под аккаунта сервиса MSSQL или даже из-под LocalSystem.
Во-вторых, несмотря на то, что поле с зашифрованным паролем называется pwdhash — это никакой не хэш, а зашифрованные данные. Ключ для расшифровки хранится в системной таблице master.sys.key_encryptions :
Этот ключ хранится в двух экземплярах: первый ( thumbprint=0x01 ) позволяет использование только из-под аккаунта сервиса MSSQL, второй ( thumbprint=0x0300000001 ) — из-под любого аккаунта на сервере. Обратите внимание, что ни один из хранящихся ключей не пригоден для «офлайн-расшифровки» паролей вне сервера, так что если злоумышленнику и удастся украсть данные обеих этих системных таблиц, ему это ничего не даст.
В-третьих, ключ для расшифровки сам зашифрован, и «ключ для ключа» хранится в системном реестре в HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$InstanceName\Security\Entropy :
Чтобы прочитать из реестра это значение, опять же требуются права локального администратора на сервере.
Для получения всех трёх составляющих и расшифровки сохранённых паролей, автор создал удобный PowerShell-скрипт.
Если запустить его из-под аккаунта локального администратора на сервере, он порадует вас примерно таким окошком:
Аналогичным образом расшифровываются и credentials, сохранённые в базе для выполнения команд ( xp_cmdshell и т.п.) от имени менее привилегированных аккаунтов, нежели сервис MSSQL.
С одной стороны, всё это кажется вопиющим примером security through obscurity: если расшифровка паролей для соединения с linked server-ами уже реализована в MSSQL, то почему нет возможности показать эти пароли забывчивому администратору? С другой стороны, с точки зрения безопасности всё весьма неплохо: для расшифровки паролей нужен доступ к серверу с правами локального администратора, а если злоумышленник получил такой доступ, то он уже и так может делать с сервером всё что захочет. Нежелательное повышение привилегий возможно лишь в том случае, если пароль от какого-нибудь linked server-а используется впридачу для чего-нибудь важного, например как пароль администратора того же сервера :^)
Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве
Если нужно восстановить пароль SA на Microsoft SQL Server
Случается такое – нужен администраторский доступ к SQL серверу, но почему-то забыл или и не знал пароль SA.
Если есть администраторские права в системе то всё решается легко и легально.
При запуске SQL Server напишет много всякого в окне командной строки.
Запускаем еще одну командную строку, и в ней – клиента командной строки SQL Server:
sqlcmd
Наша цель: создать нового пользователя с правами администратора, например sysadm с паролем sysadmpwd
CREATE LOGIN sysadm WITH PASSWORD = ‘sysadmpwd’
GO
sp_addsrvrolemember ‘sysadm’, ‘sysadmin’
GO
Выходим:
exit
И в первом окне командной строки – где запущен SQL Server – завершаем работу SQL сервера – можно нажать Ctrl-C, и на запрос об останове службы ответить утвердительно.
После этого запускаем службу SQL Server (MSSQLSERVER) в обычном режиме (через оснастку Службы, например). Подключаемся к серверу с помощью SQL Server Management Studio под новым пользователем SQL Server (sysadm/sysadmpwd) и меняем пароль SA на нужный нам.
Knowledge Base
Настройка Windows\Unix систем CISCO MIKROTIK VMWARE
Сброс пароля пользователя sa на MSSQL 2012/2014
Одним из распространенных вопросов при устройстве на работу бывает — как сбросить пароль? Это касается не только программного обеспечения, но и сетевого оборудования. Если вы хоть раз сбрасывали пароль, то можно сказать, что систему роняли не раз и зашли в своих опытах дальше среднего специалиста. Для восстановления или активации учетной запсис SA необходимо быть членом локальной группы администраторов системы, на которой установлен SQL Server. Группа администраторов имеют полные полномочия на СУБД, запущенной в однопользовательском режиме (single-user mode). Запустив SQL Server в однопользовательском режиме, можно изменить пароль учетной записи SA, и/или предоставить административные права нужной ученой записи Windows.
Активируем однопользовательский режим через реестр
Или через оснастку Диспетчер конфигурации SQL Server 2014
После добавление параметра необходимо перезапустить службу SQLSERVER.
Далее подключаемся к серверу, указав имя сервера и экземпляра. Если экземпляр по умолчанию, то пишем только имя сервера