【データベースの原理】実験3 データ保護

  • 実験の目的と要件
    1. シンプルなデータベースのバックアップと復元をマスターします。
    2. マスター SQL ユーザー、ロール、権限の制御。
    3. SQL の整合性制約をマスターする
  • 実験内容

1. データベースの復元

手順:

  • オブジェクト エクスプローラーでデータベース ノードを右クリックし、ポップアップ メニューから [データベースの復元] を選択します。
  • [データベースの復元] ウィンドウでデータベースの名前を設定します。
  • 次に、復元元を指定します。ここでは「ソースデバイス」を選択します。

2. ログインユーザーの作成

  • オブジェクト エクスプローラーを使用して、SQL Server 認証モードでログインを作成します。ログイン名は login01、パスワードは passwd01、デフォルト データベースは CAP、その他のデフォルト値はそのままです。

ヒント: オブジェクト エクスプローラーに入り、[サーバー] → [セキュリティ] → [ログイン名] を展開し、[ログイン名] 項目を右クリックして、ポップアップ メニューの [新しいログイン名] オプションを選択します。

  • システム ストアド プロシージャ sp_addlogin を使用してログインを作成します。ログイン名は login03、パスワードは passwd03、デフォルトのデータベースは CAP です。SQL エディター ウィンドウにステートメントを入力して実行し、結果をオブジェクト エクスプローラーに表示します。

EXEC  sp_addlogin  'login03' 'passwd03' 'CAP'

  • オブジェクト エクスプローラーを使用して、ログイン ユーザーlogin01およびlogin02を削除します。

ヒント: オブジェクト エクスプローラーに入り、「サーバー」→「セキュリティ」→「ログイン名」を展開し、削除するログイン アカウントを右クリックし、表示されるショートカット メニューで「削除」をクリックします。

  • システム ストアド プロシージャ sp_droplogin を使用して、ログイン ユーザー login03 を SQL Server から削除します。SQL エディター ウィンドウにステートメントを入力して実行し、結果をオブジェクト エクスプローラーに表示します。

EXEC  sp_droplogin  'login03'

3. データベース ユーザーの作成と管理

  • ログイン名が u01、パスワードが passwd01、デフォルトのデータベースが CAP であるユーザーを作成し、CAP データベースに接続します。

EXEC  sp_addlogin  'u01' 'passwd01' 'CAP'

キャップを使用する

EXEC  sp_grantdbaccess  'u01' 'u01'

  • 新しいユーザー U02 を作成します。

4. 新しいユーザーの作成にどの方法を使用しても、新しいユーザーを右クリックしてプロパティを選択します。

「パスワードポリシーを強制する」のチェックを外します

そして、ユーザーマッピングでマッピングするデータベースを選択します

5. データベースのログイン方法を変更する   

       「セキュリティ」タブでサーバー認証方法を変更します。

6. サーバーの再起動

7. 管理権限

ユーザー u01 にクエリ、テーブル顧客の挿入、および cid の変更を行う権限を付与します。

顧客の select,insert,update(cid) を u01 に付与します。

テーブル注文に対するすべての操作をユーザー u01 に許可します。

オーダーに関するすべての権限を u01 に付与します。

テーブル顧客に対するクエリ権限をすべてのユーザーに付与します

テーブル SC の選択をパブリックに許可する

テーブルエージェントへの挿入権限をユーザー u01 に付与し、この権限を他のユーザーに付与できるようにします。

付与オプションを使用したエージェントの u01 へのグランド挿入

新しいユーザー U01 としてログインし、customers テーブルにデータを挿入します。

新しいユーザー U01 としてログインし、テーブル エージェントに対する挿入権限を u02 に付与します。

ユーザー U02 としてログインし、エージェント テーブルにデータを挿入します。

DBA としてログインし、エージェント テーブルに対するユーザー u01 の挿入権限を取り消します。

挿入の取り消し

エージェントについて

u01から

DBA は、データベース CAP にテーブルを作成する権限をユーザー u01 に付与します。

u01 にテーブルの作成を許可します

u01 としてログインし、CAP に新しいテーブルを作成します。

8. 完全性管理

DBA としてログインし、orders テーブルに新しい行を挿入します。

 オーダー( '1025' 'may' 'c007' 'a01' 'p02' 1000 450 )を挿入します  

結果は何ですか?その理由は何ですか?

Customers テーブルの discnt 値は 15.0 以下である必要があります。

テーブルの顧客を変更する

制約 discnt_max チェックを追加 (discnt<=15.0)

;

以下のステートメントを実行し、実行結果を確認し、原因を分析します。

顧客を更新するには、 discnt=20 (cid= ' c002 ' )を設定します。

注文テーブルの qty 列の値は 0 以上である必要があります。

 テーブルの順序を変更する

 制約qtyckチェック ( qty >= 0 )、制約$sckチェック ( $ >= 0 )を追加します。

CAP データベースの参照整合性を定義します。

 テーブルの順序を変更する

 制約cidref外部 キー( cid ) 参照の顧客を追加します

制約aidref外部 キー( aid ) はエー​​ジェントを参照します

制約pidref外部 キー( pid ) は製品を参照します

考える質問

  1. データベースの役割とは何ですか? データベース ロールを作成および管理するにはどうすればよいですか? 例を試してみましょう。
  2. テーブル作成時に上記の主キー、外部キー、ユーザー定義制約を定義する場合、どのように定義すればよいでしょうか? create table ステートメントを書き直してください。

テーブル顧客の作成

(cid char(4) が null ではありません、

cname varchar(13)、

都市 varchar(20)、

discnt 実数制約 discnt_max check(discnt<=15.0)、

主キー(cid));

テーブルオーダーの作成

(ordno 整数が null ではない、

月の文字(3)、

cid char(4) が null ではありません。

補助 char(3) が null ではありません。

pid char(3) が null ではありません。

qty not null 制約 qtyck チェック (qty>=0)、

主キー (ordno)、

制約 cidref 外部キー (cid) は顧客を参照します。

制約aidref外部キー(aid)参照エージェント、

制約 pidref 外部キー (pid) 参照製品);

問題と解決策

付録

SQL Server アカウントには 2 種類あります。1 つはサーバーのログイン アカウント、もう 1 つはデータベースのユーザー アカウントです。ログイン アカウントとは、SQL Server サーバーにログインできるアカウントを指しますが、ユーザーはサーバー内のデータベースにアクセスできません。ログイン アカウントを持つユーザーがデータベース内のデータベースにアクセスするには、ユーザー アカウントが必要です。これは、企業の入り口でカードをスワイプして入場し (サーバーにログインし)、キーを受け取って自分のオフィスを開く (データベースに入る) ようなものです。

ログイン アカウントを使用すると、SQL Server サーバーにログインでき、すべてのログイン アカウント情報はシステム テーブル syslogins に保存されます。ユーザー アカウントはユーザー データベースに関連付けられており、データベース内のオブジェクトのすべての権限と所有権はユーザー アカウントによって制御されます。ログイン アカウントはデータベース オブジェクトへのアクセスを提供できません。ログイン アカウントがユーザー データベース内のユーザー アカウントに関連付けられている場合、ログイン アカウントを使用して SQL Server サーバーに接続し、データベース内のオブジェクトにアクセスできます。ユーザー アカウントは SQL Server によって管理され、すべてのユーザー アカウントはシステム テーブル sysusers に保存されます。

注: ユーザー アカウントは特定のデータベースに作成し、ログイン アカウントに関連付ける必要があります。

おすすめ

転載: blog.csdn.net/CE00001/article/details/130163160