#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 году, и поэтому он работает на более старых версиях.