Azure SQL 新增使用者並授予讀寫權限

以往有 GUI 到了 Az 忽然不好使了…

首先登入帳號/密碼跟使用者是分開的

登入 => 使用者 => 權限 => 資料庫

這邊先建立登入帳號與密碼 (這部分是存在 master)

帳號:NewLoginAccount

密碼:donthackmeplz

USE master
CREATE LOGIN [NewLoginAccount] WITH PASSWORD='donthackmeplz'
GO

然後ssms登入之後會到master進行一些查詢

如果沒幫這個登入建立 master 的使用者,到時候 ssms 雖然可以登入但重整會跳錯誤

所以接著用剛剛的新登入帳號來創建 master 的使用者

帳號:NewLoginAccount

使用者名稱:NewUserName

USE master
CREATE USER [NewUserName] FOR LOGIN [NewLoginAccount] 
GO

接著切換到你真正要存取的資料庫

再建一次使用者

USE MyAppDb
CREATE USER [NewUserName] FOR LOGIN [NewLoginAccount] 
GO

到這邊雖然新帳號可以登入也看得到這個DB

但是會發現裡面資料表都看不到

這是因為沒有讀取權限

所以最後我們需要針對該使用者進行授權 (基於角色)

USE MyAppDb
EXEC sp_addrolemember 'db_datareader', [NewUserName];
GO

如果同時需要增刪修,就一併授予寫入權限

USE MyAppDb
EXEC sp_addrolemember 'db_datawriter', [NewUserName];
GO

到這邊一般應用程式應該差不多使用這帳號來設定連線字串就可以了

開發時如果需要 db migrations 進行資料表的增刪修

則建議使用另一個較高權限的帳號來進行操作

參照

在Azure SQL上新增使用者 (andy51002000.blogspot.com)

PS5