【问题标题】:Change password for a user on SQL Server using powershell使用 powershell 在 SQL Server 上更改用户的密码
【发布时间】:2020-10-11 22:39:15
【问题描述】:

设置:SQL Server 在 AZURE enclave 中运行。混合模式认证。 SQL 用户不是管理员组的成员,只是对数据库具有读/写权限的基本用户。我不知道以前的密码是什么。我已经生成了一个新密码。

我不知道 sa 级别用户的密码是什么。我不知道运行脚本的技术人员是否也对 SQL Server 具有正确的权限,因为角色在 windows 之间是分开的,并且 sql server 管理是明确定义的。我不知道脚本运行时相关用户的密码是什么。

使用 powershell,以管理员(提升)权限运行 - 我想更改 sql 用户的密码。我该怎么办?

【问题讨论】:

  • 如果您无权访问有权更改密码的帐户,则不能;无论如何都不是你想要的方式......这有很强烈的XY问题的味道。
  • 此外,在我看来,仅使用本地管理员帐户即可轻松更改实例上任何帐户的密码,这将是一个巨大安全漏洞。

标签: sql-server powershell


【解决方案1】:

如果您没有系统管理员登录名,您将有一个 Windows 管理员按照此处的步骤操作:Connect to SQL Server when system administrators are locked out

此脚本将使运行它的 Windows 管理员成为系统管理员:

net stop mssqlserver 
net start mssqlserver /mSQLCMD 
sqlcmd -Q "if not exists(select * from sys.server_principals where name='BUILTIN\administrators') CREATE LOGIN [BUILTIN\administrators] FROM WINDOWS;EXEC master..sp_addsrvrolemember @loginame = N'BUILTIN\administrators', @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 

【讨论】:

  • 你为什么在这里使用sp_addsrvrolemember?至少从 SQL Server 2012(甚至可能是 2008 年或更早)开始,它就已被弃用。
  • 因为我在 2010 年编写了脚本,所以它适用于旧版本。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2013-10-26
  • 1970-01-01
相关资源
最近更新 更多