MSSQL 增加使用者

Posted in :

前一篇一下子就建好MSSQL database,接下來要建立login 的  user. 直接用

CREATE LOGIN dbuser WITH PASSWORD = 'password';
GO

Msg 33064, Level 16, State 2, Server localhost, Line 1
密碼驗證失敗。密碼因不夠複雜而不符合 SQL Server 密碼原則的需求。密碼長度至少必須要是 8 個字元,且包含下列四種字元中的其中三種: 大寫字母、小寫字母、10 進位數字,以及符號。

結論,密碼給複雜點的。

接下來是切換到要使用的database 然後讓 user 可以 access:

-- Creates a database user for the login created above. 
CREATE USER dbuser FOR LOGIN dbuser;

若要執行跨資料庫查詢,您必須針對呼叫的資料庫設定 TRUSTWORTHY 選項。 例如,如果上述定義的使用者 (Carlo) 位於 DB1 中,為了執行 SELECT * FROM db2.dbo.Table1; ,則必須開啟資料庫 DB1 的 TRUSTWORTHY 設定。 請執行下列程式碼,將 TRUSTWORTHY 設定設為開啟。

ALTER DATABASE DB1 SET TRUSTWORTHY ON;  

有了帳號,接下來要給帳號一個 role:

USE master; 
CREATE SERVER ROLE buyers AUTHORIZATION BenMiller; 
GO

如果 ROLE 已存在,會顯示這個Error:

Msg 15025, Level 16, State 1, Server localhost, Line 1
伺服器主體 'buyers' 已經存在。

ROLE 加members 的用法:

ALTER ROLE your_role_name ADD MEMBER your_user

範例,The following example grants CREATE TABLE permission on the AdventureWorks database to user MelanieK.:

USE AdventureWorks; 
GRANT CREATE TABLE TO MelanieK; 
GO

範例,The following example grants SHOWPLAN permission on the AdventureWorks2012 database to application role AuditMonitor.

USE AdventureWorks2012; GRANT SHOWPLAN TO AuditMonitor; GO

附註:好像直接  grant ALTER to your_role  ,這樣子就有 create table 權限的樣子。

附註:好像直接  grantCONTROL to your_role  ,這樣子就有 insert  權限的樣子。

 

 

 


ROLE 裡要新增移除成員:

CREATE ROLE Sales; 
ALTER ROLE Sales ADD MEMBER Barry; 
ALTER ROLE Sales DROP MEMBER Barry;

附註:要成員都移光光之後,才能 drop role。

附註:有些指令要SQL Server (starting with 2012) 才有提供…。

2008 是透過 sp 去完成 DROP MEMBER:

sp_droprolemember (Transact-SQL)
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-droprolemember-transact-sql


 

 

 

資料來源:

建立資料庫使用者
https://msdn.microsoft.com/zh-tw/library/aa337545(v=sql.120).aspx

自主資料庫的安全性最佳做法
https://docs.microsoft.com/zh-tw/sql/relational-databases/databases/security-best-practices-with-contained-databases

CREATE LOGIN (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-login-transact-sql

CREATE SERVER ROLE (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-server-role-transact-sql

GRANT (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-transact-sql

GRANT Database Permissions (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-database-permissions-transact-sql

GRANT Object Permissions (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-object-permissions-transact-sql

How to drop a role in a SQL Server Database
https://www.sqlshack.com/drop-role-sql-server-database/

SQL Server: Grant/Revoke Privileges
https://www.techonthenet.com/sql_server/grant_revoke.php

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *