Изменение пароля для пользователя на SQL Server с помощью powershell

#sql-server #powershell

#sql-сервер #powershell

Вопрос:

Настройка: SQL Server работает в AZURE enclave. Проверка подлинности в смешанном режиме. Пользователь SQL НЕ является членом группы администраторов, просто обычный пользователь с разрешениями на чтение / запись в базу данных. Я не знаю, какой предыдущий пароль есть / был. Я сгенерировал новый пароль.

Я не знаю, какой пароль для пользователя уровня sa. Я не знаю, будет ли у специалиста, выполняющего скрипт, правильные разрешения на сервере SQL, поскольку роли разделены между Windows, и администрирование sql server четко определено. Я не знаю, какой пароль для данного пользователя может быть в момент запуска скрипта.

Использование powershell, запуск от имени администратора (с повышенными правами доступа) — я хотел бы изменить пароль для пользователя sql. Как мне это сделать?

Комментарии:

1. Если у вас нет доступа к учетной записи, у которой есть разрешение на изменение пароля, вы не сможете; в любом случае, не так, как вы хотите… Это очень сильно пахнет проблемой XY.

2. Кроме того, простая возможность легко изменять пароли любой учетной записи в экземпляре только с помощью учетной записи локального администратора, на мой взгляд, была бы огромным недостатком безопасности.

Ответ №1:

Если у вас нет логина системного администратора, вы попросите администратора Windows выполнить процедуру, описанную здесь: подключитесь к SQL Server, когда системные администраторы заблокированы

Этот сценарий сделает администратора Windows, выполняющего его, системным администратором:

 net stop mssqlserver 
net start mssqlserver /mSQLCMD 
sqlcmd -Q "if not exists(select * from sys.server_principals where name='BUILTINadministrators') CREATE LOGIN [BUILTINadministrators] FROM WINDOWS;EXEC master..sp_addsrvrolemember @loginame = N'BUILTINadministrators', @rolename = N'sysadmin'" 
net stop mssqlserver 
net start mssqlserver 
sqlcmd -Q "if exists( select * from fn_my_permissions(NULL, 'SERVER') where permission_name = 'CONTROL SERVER') print 'You are a sysadmin.'"
  

Или вы можете изменить его, чтобы разрешить администратору Windows изменять пароль пользователя

 net stop mssqlserver 
net start mssqlserver /mSQLCMD 
sqlcmd -Q "alter login SomeLogin with password = '*********'" 
net stop mssqlserver 
net start mssqlserver 
  

Комментарии:

1. Почему вы используете sp_addsrvrolemember here? Это устарело, по крайней мере, с SQL Server 2012 (может быть даже 2008 или ранее).

2. Потому что я написал сценарий в 2010 году, и поэтому он работает на более старых версиях.