トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
3.データベースユーザの登録

データベースサーバーを操作するときに、『ログイン名』 『データベースユーザ名』を混同しないでください。

[ログイン名]
連載第 1 回目の
「9.データベースサーバーの認証モードの設定について」
「10.saログインのパスワードの設定」

連載第 2 回目の
「1.最初にsaのパスワードを設定しましょう」
「2.データベースの作成権限のあるログイン名を登録しましょう」
などで、そのログイン名の役割について解説しております。ぜひもう1度復習をしてください。

ログイン認証を簡単に説明すると、
『データベースサーバーに接続を行うときの認証テストであり、この認証に合格しないとサーバーへの接続自体が拒否されます。 またログイン認証に合格したといっても、個々のデータベースの使用が許可されたわけではない。』
となるでしょう。

ここで重要なことは、ログイン名AさんとBさんの両名がログイン認証に合格しても、AさんはデータベースSampleの利用ができるが、Bさんはその使用が 拒否されることもあるという事実です。つまりログイン認証とデータベースの使用許諾とは別問題であるということを、ぜひここで覚えてください。
そこで、データベースの使用許諾の仕組みはどのように行うのかというオペレーション方法の理解が必要です。そのキーワードがデータベースユーザです。

[データベースユーザ]
一般には、「ユーザ」と言えば、データベースユーザのことを表します。ユーザ名とは、そのデータベースを使用することができる人の名前であり、個々のユーザに 対して、データベース内部でのセキュリティ権限が定義されます(表1)
表1:データベースロール
データベースロール名 その意味
public 誰でも所属します。
他のロールに所属しない人は、このpublicロールの権限が与えられます。
データベースを使う人の最低限のセキュリティを設定します。
db_owner データベース所有者を表します。
データベース内のすべての権限が与えられます。
db_accessadmin データベースユーザの登録管理業務ができます。
db_securityadmin データベースのロールを管理し、ロールのメンバ管理ができます。
またデータベース内のオブジェクトの管理ができます。
db_ddladmin データベース内のオブジェクトの追加、変更、または削除ができます。
db_backupoperator データベースをバックアップすることができます
db_datareader データベース内のすべてのユーザー テーブルのデータを表示することができます。
db_datawriter データベース内のすべてのユーザー テーブルでデータの追加、変更、または削除を行うことができます。
db_denydatareader データベース内のどのデータも表示できません(すべてのデータを見ることができません)
db_denydatawriter データベース内の任意のデータを変更することはできません(すべてのデータに関して書き込み禁止です)
サーバー全体のセキュリティ権限はサーバーロールとして定義されましたが 第2回 図09 表2)、個々のデータベースに関するセキュリティ権限は、データベースロールといいます (表1)
表2:サーバーロール
サーバーロール名(略称) その意味
sysadmin データベースサーバーの全能権限者。SQL Server で任意の作業を行います。このロールの権限は、その他のすべての固定サーバー ロールにまたがって適用できます。
serveradmin サーバー レベルの設定を指定します。
setupadmin リンク サーバーの追加および削除を行い、sp_serveroption などの一部のシステム ストアド プロシージャを実行します。
securityadmin サーバーのログインを管理します。
processadmin SQL Server のインスタンスで実行中のプロセスを管理します。
dbcreator データベースの作成および変更を行います。
diskadmin ディスク ファイルを管理します。
bulkadmin BULK INSERT ステートメントを実行します。

ユーザ名は、ログイン名と1対1に対応します。一般的にログイン名とユーザ名は同じ名前にしますが、ログイン名とユーザ名を異なる名前で対応させても構いません。 この対応関係を作ることが、そのデータベースの使用許諾にあたります。
ログイン認証に合格しても、あるデータベースの利用ができない原因は、そのデータベースにユーザ登録が行われていないことが考えられます。

[ログイン名Aさんの登録]

新しいログインの登録は、Access 2002のAccessプロジェクトではできません。Enterprise Managerを操作しましょう。

図1:新規ログインの登録
[セキュリティ]−[ログイン]
で、[新規ログイン]を選択してください。

図1:新規ログインの作成
図1:新規ログインの作成

図2:ログイン名とそのパスワードの定義
名前(ログイン名)は、Aとします。その認証方法はデータベースサーバー自身で行うSQL Server認証としますので、そのパスワードの入力も必要です。 このログイン名Aさんが、Sampleデータベースをよく使うのであれば、既定のデータベースをSampleとしましょう。特に既定のデータベースと呼べるものが無ければ、 便宜上、masterデータベースとします。

図2:ログインの登録
図2:ログインの登録

図3:サーバーロールの登録
サーバーロールは(表2)、データベースサーバー全体に対する仕事の権限を表します。 ここでチェックした役割が、このログインAさんに許可されます。特別な理由が無い限りサーバーロールにはチェックしない方がよいでしょう。

図3:サーバーロールの登録(何もチェックはしない)
図3:サーバーロールの登録(何もチェックはしない)

図4:データベースユーザの登録
ログインAさんが使用できるデータベースをチェックします。このチェックを付けたデータベースに対してデータベースユーザ名を登録することで、ログインAさんがそのデータベースを使用できるようになります。

図4:データベースユーザの登録
図4:データベースユーザの登録

またそのデータベース内におけるデータベースロールも登録します。特別な権限を与えなければ、publicロールだけに所属させます (publicロールのチェックは外すことはできません)。

以上を入力したらOKボタンを押して、ログインを登録してください。

[ログイン名Bさんの登録]

ログインAと同様に、Bを登録します。但し、Sampleデータベースにユーザ登録は行いません(図5)

図5:ログインBのデータベースユーザ登録は何も行わない
図5:ログインBのデータベースユーザ登録は何も行わない

[ログイン名AさんのAccessプロジェクトの作成]

ログインAさんがSampleデータベースに接続を行う場合のAccessプロジェクトを作成してみます。図6のようになります。

図6:ログインAさんがSampleデータベースに接続を行うAccessプロジェクト
図6:ログインAさんがSampleデータベースに接続を行うAccessプロジェクト

「接続のテスト」ボタンを押してください。図7のように、Sampleデータベースに対して正しく接続できることがわかります。
Sampleデータベースには、ログイン名Aに対応するデータベースユーザが登録されているため、このデータベースに対する利用が許可されます。

図7:接続のテスト。正しく接続ができました。
図7:接続のテスト。正しく接続ができました。

[ログイン名BさんのAccessプロジェクトの作成]

図6と同様に、ログイン名Bさんに対してもSampleデータベースに接続を行うAccessプロジェクトを作成してみましょう。そして「接続のテスト」ボタンを押してください。
ログイン名Bに対応するデータベースユーザは、Sampleデータベースには存在しません。このためデータベースに対する接続はできず、図8のようなエラーメッセージが表示されます。

図8:ログイン名Bは、Sampleデータベースに接続することはできない
図8:ログイン名Bは、Sampleデータベースに接続することはできない

この例のように、データベースユーザが登録されていないと、そのデータベースを使用できないということが、お分かりいただけると思います。


<< 前へ次へ >>
◆PAGE LINK  |  |  |  |  |  |  | コラム |  |  |  | 10 | 11 | 12 | 13 | 14 

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.