【自習メモ】SQL Server でのユーザーロールと権限の作成(SQL ステートメントを使用) update 2023.07.06

--<在SQL Server中创建用户角色及授权(使用SQL语句)>更新2023.07.06
--1. 首先在 SQL Server 服务器级别,创建登陆帐户(create login)
--2. 创建数据库用户(create user):
--3. 通过加入数据库角色,赋予数据库用户“dba”权限:

--创建登陆帐户(create login)
create login dba with password='abcd1234@', default_database=AliSysDB
--这时候,dba 帐户就可以连接到 SQL Server 服务器上了。但是此时还不能 访问数据库中的对象
--(严格的说,此时 dba 帐户默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象)。
--要使 dba 帐户能够在 AliSysDB 数据库中访问自己需要的对象, 需要在数据库 AliSysDB 中建立一个“数据库用户”,
--赋予这个“数据库用户” 某些访问权限,并且把登陆帐户“dba” 和这个“数据库用户” 映射起来。
--创建“数据库用户”和建立映射关系只需要一步即可完成

--为登陆账户创建数据库用户(create user),在AliSysDB数据库中的security中的user下可以找到新创建的dba
create user dba for login dba with default_schema=dbo
--通过加入数据库角色,赋予数据库用户“db_owner”权限
exec sp_addrolemember 'db_owner', 'dba'

----让 SQL Server 登陆帐户“dba”访问多个数据库
use DBErp
create user dba for login dba with default_schema=dbo
exec sp_addrolemember 'db_owner', 'dba'


-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

--删除数据库用户:
drop user dba

--删除 SQL Server登陆帐户:
drop login dba



--禁用登陆帐户
alter login dba disable
--启用登陆帐户
alter login dba enable

--登陆帐户改名
alter login dba with name=dba_tom
--登陆帐户改密码:
alter login dba with password='aabb@ccdd'

--数据库用户改名:
alter user dba with name=dba_tom
--更改数据库用户 defult_schema:
alter user dba with default_schema=sales

--使用T-SQL创建用户
--添加角色
use AliSysDB
go
sp_addlogin  'test_db','123456','AliSysDB' 
go
sp_addsrvrolemember   'test_db','sysadmin'   
go
sp_adduser 'test_db','test_db','db_owner'
go  

--使用存储过程来完成用户创建
--下面一个实例来说明在sqlserver中如何使用存储过程创建角色,重建登录,以及如何为登录授权等问题



USE DBErp
 
--创建角色 r_test
EXEC sp_addrole 'r_test'
--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test','a@cd123','DBErp'

--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test','u_test'

--添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember 'r_test','u_test'

--授予角色 r_test 对 效期查询 表的所有权限
GRANT ALL ON 效期查询 TO r_test
--ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。

--如果要收回权限,可以使用如下语句。(可选择执行)
revoke all on 效期查询 from r_test

--授予角色 r_test 对 实时库存查询 表的 SELECT 权限
GRANT SELECT ON 实时库存查询 TO r_test


--用l_test登陆,发现可以查询Sales.Orders和实时库存查询两张表
select * from 效期查询
select * from 实时库存查询

--拒绝安全账户 u_test 对 效期查询 表的 SELECT 权限
DENY SELECT ON 效期查询 TO u_test

--重新授权
GRANT SELECT ON 效期查询 TO u_test


--从数据库中删除安全账户,failed
EXEC sp_revokedbaccess 'u_test'

--删除角色 r_test,failed
EXEC sp_droprole 'r_test'

--删除登录 l_test,success
EXEC sp_droplogin 'l_test'



--revoke 与 deny的区别
--revoke:收回之前被授予的权限
--deny:拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员资格继承权限。比如UserA所在的角色组有inset权限,但是我们Deny UserA使其没有insert权限,那么以后即使UserA再怎么到其他含有Insert的角色组中去,还是没有insert权限,除非该用户被显示授权。
--简单来说,deny就是将来都不许给,revoke就是收回已经给予的。



GRANT INSERT ON TableA TO RoleA
GO
EXEC sp_addrolemember RoleA, 'UserA' -- 用户UserA将有TableA的INSERT权限
GO
 
REVOKE INSERT ON TableA FROM RoleA -- 用户UserA将没有TableA的INSERT权限,收回权限
GO
 
GRANT INSERT ON TableA TORoleA --重新给RoleA以TableA的INSERT权限
GO 
 
DENY INSERT ON TableA TO UserA -- 虽然用户UserA所在RoleA有TableA的INSERT权限,但UserA本身被DENY了,所以用户UserA将没有TableA的INSERT权限。





SSMS データベース管理ツールを使用してユーザー ログインを作成すると、この視覚的な操作は、SQL ステートメントを使用して作成するよりもはるかに簡単になります。

1. ユーザーを作成する

「セキュリティ」→「ログイン名」(右クリック)→「新しいログイン名」でデータベースにログインします。

ポップアップ表示される新しいログイン名のウィンドウの「一般」で、ログイン名とパスワードを入力します。パスワードはより複雑に設定する必要があります。そうしないとエラーが報告されます。単純なパスワードを設定したい場合は、単に削除するだけで済みます。 「パスワードポリシーを強制する」√

2. 管理者権限を設定する

左側の選択ページで「サーバー ロール」をクリックして、新しく作成したユーザーに権限を付与します。右側のサーバー ロール パネルで、パブリックにチェックを入れます。

注: 作成したアカウントにシステム管理者の権限が必要ない場合は、sysadmin 項目をチェックしないでください。

サーバーの役割の説明
sysadmin は、SQL Server で任意の操作を実行します。
serveradmin は、サーバー設定を構成します
。 setupadmin は、レプリケーションをインストールし、拡張機能プロセスを管理します。
securityadmin は、ログインと CREATE DATABASE 権限を管理し、監査プロセスを読み取ります。
processadmin は、SQL Server プロセスを管理します。
dbcreator は、データベースを作成および変更します
。 discadmin は、ディスク ファイルを管理します。

3. 管理者以外の権限を設定する

左側の選択ページで「ユーザー マッピング」をクリックし、ユーザーがログインできるデータベースを選択し、ユーザーがデータベースにログインするために必要な権限を選択します。そして、パネルの下にある [データベース ロール メンバーシップ] の db_owner 項目を確認してください。

注: システム管理権限のないアカウントにデータベースを管理する場合は、db_owner 項目を確認する必要があります。そうしないと、アカウントはデータベース内のデータ テーブルを参照できなくなります。

新しく作成したユーザー dba に複数のデータベースに対する権限を与え、
前の手順に進み、他のデータベースをクリックして、以下の対応する権限を確認します。このようにして、複数のデータベースに対する異なる権限をユーザーに一度に付与できます。

「db_owner」 -- データベース権限の削除を含む、データベースのすべての権限を持ちます。
「db_accessadmin」 -- データベース ユーザーに他のデータベース ユーザーを作成する権限のみを与えますが、ログイン ユーザーを作成する権限はありません。
'db_securityadmin' -- 完全な権限、オブジェクトの所有権、ロール、およびロールのメンバーシップを管理できます。
'db_ddladmin' -- すべての DDL (作成、変更、削除) を発行できますが、GRANT、REVOKE、または DENY ステートメントは発行できません。
'db_backupoperator' -- 権限を許可します。データベースをバックアップおよび復元します [バックアップと復元は SQL Server Management Studio を通じて行うこともできます]
'db_datareader' -- データベース内の任意のユーザー テーブルのすべてのデータを選択できます。
'db_datawriter' -- データベース内の任意のユーザー テーブルを変更できます。 「db_denydatareader」内のすべてのデータ
-- データベース内のどのユーザー テーブル内のデータもクエリできません。
「db_denydatawriter」 -- データベース内のどのユーザー テーブル内のデータも変更できません。
 

4. 左側の選択ページで「セキュリティオブジェクト」をクリックし、セキュリティオブジェクトを選択し、承認します。

4. [ステータス]を入力して接続エンジンの認証を設定します

最後に、[ステータス] をクリックし、データベース エンジンへの接続を許可し、ログイン名を有効にして、最後に [OK] をクリックします。

ログインできない場合は
、データベースのプロパティページの[セキュリティ]でSQL ServerおよびWindowsの認証モードが有効になっているかどうかを確認してください。

おすすめ

転載: blog.csdn.net/zgscwxd/article/details/131586286