データベースの運用と管理の基本

2009年10月27日(火)
藤本 壱

ユーザーと権限の管理

「データベース基礎中の基礎」の第4回では、データベースの運用と管理の基本を解説します。具体的には、ユーザーと権限の仕組みや、複数のデータベース操作を確実に処理するトランザクションについて解説します。また、Webアプリケーションとデータベースの関係についても述べます。

企業などでは、多くの人が使うネットワークにデータベースを接続していることがよくあります。この際、データベースに対して誰でもアクセスできるようになっていると、データの改ざんなどの不正行為が行われる可能性があります。

また、規模の大きなデータベースになると、複数の人で分担してデータを入力するのが一般的です。ここで、データ入力担当者のすべてが、データベースを自由に操作できる状態になっていると、問題が起こることがあります。

例えば、人事関係のデータと営業関係のデータが、1つのデータベースに入っているとします。ここで、営業部の社員が、本来であれば関係のない人事関係のデータにアクセスできたとします。この場合、営業部の社員が人事のデータを改ざんすることもあり得ます。

そこで、通常のRDBMSでは、データベースにアクセスできる人(ユーザー)を限定し、ユーザーごとにパスワードを設定できるようにしています。ログインしたユーザーだけがデータベースにアクセスできるように設定できます。

テーブルの操作など、データベースに対する各種の操作に対して、「権限」を設定することもできます。実行可能な操作をユーザーに応じて切り替えられます。例えば、管理者にはすべての権限を与え、営業部のユーザーには営業関係のテーブルにアクセスする権限を与える、といった設定が可能です(図1-1)。

ユーザーの作成には、「CREATE USER」などのSQLを使います。権限の設定は、「GRANT」などのSQLを使います。ただし、ユーザー権限に関するSQL文の書き方は、データベースによって違いがあります。

トランザクション

テーブルの行を追加/更新/削除する際、2つ以上の操作の組み合わせで1つの処理が完結することがあります。この場合、処理の途中でテーブルの操作に失敗したら、それまでに行った操作をすべて元に戻さないと、データの整合性が崩れてしまいます。

例えば、ある銀行のデータベースで、Aさんの口座からBさんの口座に1万円を振り込む処理を考えてみましょう。この処理は、以下の2つの操作から構成されます。

  1. Aさんの口座の残高を1万円減らす
  2. Bさんの口座の残高を1万円増やす

ここで、(1)の操作が成功した後、(2)の操作が失敗したとしてください。すると、Aさんの口座の残高は1万円減ったにもかかわらず、Bさんの口座の残高は変化しません。つまり、振り込みが正しく行われず、データベース上では、Aさんの1万円がどこかに消えてしまうことになります。

一連の操作全体が成功した時点で完結するような処理のことを、「トランザクション」(transaction)と呼びます。そして、トランザクションが成功したことをもって処理を完結させることを、「コミット」(commit)と呼びます。一方、トランザクションの途中で操作が失敗したときに、トランザクション開始前の状態に戻すことを、「ロールバック」(rollback)と呼びます。

上述した口座間の振込みの例では、(1)と(2)の両方が成功したときに、トランザクションをコミットします。一方、(1)だけが成功して(2)が失敗したときは、トランザクションをロールバックして、Aさんの口座の残高を元に戻します(図1-2)。

なお、トランザクションの開始や、コミット/ロールバックも、SQLで指定します。トランザクションの開始は、「BEGIN」や「START TRANSACTION」などの命令を使います。コミットは「COMMIT」、ロールバックは「ROLLBACK」などの命令になります。トランザクションの開始とコミット/ロールバックの間では、INSERTなどのSQLを順次実行します。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています