前一篇一下子就建好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