SQL登入帳號可以修改自己的密碼嗎?

日前一位開發同仁反應他透過SSMS的UI要修改自己的密碼時都會顯示權限不足而無法修改,我試了一下發現的確如此

因此我查了一下MSDN文件看看修改密碼需要的權限是甚麼,結果看到需要的Permissions是Alter Any Login。基於資安問題我不可能給這樣的授權,因此我當下幫該同仁修改他的密碼來結案。但心裡對這件事耿耿於懷,為何SQL登入帳號無法修改自己的密碼呢?

日前無意間看見一篇文章才發現不是SQL登入帳號無法修改自己的密碼,而是自己漏掉了關鍵語法導致,因此寫下本文筆記一下。

我先模擬一下一個SQL帳號試圖修改自己的密碼時會遇見的錯誤,如下圖所示,在紅色圈選處可以看見錯誤訊息是指出沒有權限修改。

 

接下來我給login1這一個帳號有Alter Any Login的權限後(下圖紅色圈選處),再次修改自己的密碼看看。這一次我們的修改動作並沒以錯誤訊息,命令順利完成。但是我們不可能給所有的帳號這樣的權限只為了讓他們可以自己修改自己的密碼。

 

噹噹 ! 關鍵語法出現。如下圖紅色圈選處顯示,當我們修改密碼時,整個Alter Login除了要給新密碼外,也得用Old_Password參數帶入舊密碼。這樣一來SQL帳號即便沒有Alter Any Login的權限也可以順利修改自己的密碼了。

 

 

另一個方式就是可以用sp_password這一個預存程序來修改自己的密碼,但這一個預存程序在未來新版本的SQL是有可能不再支援歐。

 

我是ROCK

rockchang@mails.fju.edu.tw