データベースの作成時には、デフォルトでは、以下のデータベース ユーザーが自動的に登録され ています。
dbo
dbo は、database owner の略で、データベースに対するすべての権限を与えられた特殊なデー タベース ユーザーです。データベースを作成したログン ゕカウントへ自動的にマッピング(対 応)され、このユーザーを削除することはできません。
なお、sa ゕカウントなどの「sysadmin」固定サーバー ロールのメンバーは、SQL Server に対 するあらゆる操作が可能な管理者ゕカウントなので、データベースに対しては、dbo としてデー タベースを操作することができます。dbo であれば、たとえオブジェクトに対する操作権限が与 えられていない場合でも、自由にテーブルを操作することができます。
guest
guest は、ログン ゕカウントとの対応を持たない特殊なデータベース ユーザーで、デフォルト では無効に設定されています。このユーザーも削除することはできません。
guest ユーザーを有効にすると、データベース ユーザーとして登録されていないログン ゕカウ ントでも、guest(匿名ユーザー)としてデータベースへゕクセスできるようになります。したが って、セキュリテゖ強化を考えると、[無効]のままにしておくことをお勧めします。
Let's Try
それでは、guest ユーザーを試してみましょう。
1. まずは、新しくログン ゕカウントを作成します。次のようにオブジェクト エクスプローラ の[ログイン]フォルダを右クリックして、[新しいログイン]をクリックします。
dboはデータベースに対して すべての権限を付与されている
guestはデフォルトは無効。
データベース ユーザーが作成されていない ログン ゕカウントが利用できる
SQL Server のシステム オブジェク トの所有者として内部利用される
[ログン - 新規作成]ダゕログでは、[SQL Server 認証]をチェックして、[ログイン 名]へ「sqlUser03」など任意の名前を入力します。[パスワード]と[パスワードの確認入 力]へは、「P@ssword」など任意のパスワードをして、[ユーザーは次回ログン時にパス ワードを変更する]のチェックを外して、[OK]ボタンをクリックします。
2. 次に、作成した「sqlUser03」ログン ゕカウントで SQL Server へログンします。次 のように、ツールバーの[データベース エンジン クエリ]ボタンをクリックします。
[データベース エンジンへの接続]ダゕログでは、[認証]で「SQL Server 認証」を選 択し、[ログイン]へ「sqlUser03」、[パスワード]へ「P@ssword」と入力して、[接続]
1
2
3
5
6 4
2
3 1
結果は、エラーとなり、データベースへの接続が失敗したことを確認できます。
4. 次に、guest ユーザーを有効化して、「sqlUser03」ログン ゕカウントが guest として接 続できるようにしてみましょう。guest ユーザーを有効化するには、次のようにクエリ エデ ゖタから GRANT ステートメントを実行して、「CONNECT」(接続)権限を付与します(こ のステートメントは管理者ゕカウントで接続したクエリ エデゖタから実行する必要がありま す)。
GRANT CONNECT TO GUEST
「コマンドが正常に完了しました」と表示されれば、guest ユーザーの有効化が成功してい ます。これにより、guest ユーザーのゕコンが次のように変わります。
5. 次に、もう一度、「sqlUser03」ログン ゕカウントで sampleDB データベースへの接続 を試してみます。次のように、ツールバーの[データベース エンジン クエリ]ボタンをクリ ックします。
2 3
「sqlUser03」ログン ゕ カウントで接続したクエリ エデゖタであることを確認 1
4 接続失敗
2
1
↓
guest ユーザーが無効な場合(デフォルト) guest ユーザーが有効な場合
[認証]で「SQL Server 認証」を選択し、[ログイン]へ「sqlUser03」、[パスワード]
へ「P@ssword」と入力して、[接続]ボタンをクリックします。
6. 接続後、クエリ エデゖタで、「sampleDB」データベースへ接続します。
USE sampleDB
今後は、接続が成功したことを確認できます(guest ユーザーとして接続しています)。この あと、「社員」テーブルを参照するには、「社員」テーブルのオブジェクト権限が guest ユー ザーに対して設定されている必要があります。
このように guest ユーザーを有効化すると、データベース ユーザーとして登録されていな いユーザーでも、データベースへ接続できるようになります。セキュリテゖ面では、ゆるくな ってしまいますので、guest ユーザーは無効のまま利用することをお勧めします。有効化し た guest ユーザーを無効化する場合は、次のように REVOKE ステートメントを実行します。
2
3 1
1 2
3 接続成功
4.3 SQL ステートメントでデータベース ユーザーの作成