この特集のトップページへ
Chapter 3:データストア層の構築



  COLUMN   MSDEのパスワードの設定

 MSDEをインストールした直後は,MSDEの管理アカウントであるsaというユーザーだけが存在し,このアカウントには特にパスワードが設定されていない。ユーザーsaはMSDEに対してすべての操作を実行できるため,パスワードを未設定のまま放置するのは,セキュリティ上よくない。

 MSDEの設定を変更する方法はさまざまだが,ここではOSQLユーティリティを使ったパスワードの設定方法について説明しておこう。

 MSDEのパスワードを変更するには,OSQLユーティリティを実行し,sp_passwordというストアドプロシージャを呼び出せばよい。sp_passwordストアドプロシージャの呼び出し書式は,次のとおりである。

   EXECUTE sp_password '古いパスワード', '新しいパスワード', 'ユーザー名'

 古いパスワードもしくは新しいパスワードが空(未設定)であれば,NULLを指定する。

 その次にgoコマンドを実行すると,sp_passwordストアドプロシージャが実行され,パスワードが変更される。goコマンドは,その直前に指定したすべてのTransact-SQLステートメントを実行するための命令である。

 たとえば,ユーザーsaのパスワードを“Adminpass”というパスワードに変更するには,次のようにする(Fig.3-34)。

   EXECUTE sp_password NULL, 'Adminpass', 'sa'
   go
Fig.3-34 OSQLユーティリティを使ったパスワードの変更

fig3_34.gif

 ところで,ユーザーsaはデータベースの管理特権を所持する特殊アカウントなので,このユーザーでデータベースに接続することは,あまり日常的ではない。一般的には,特定のデータベースにアクセスする権限のみを所持するユーザーを作り,そのユーザーでアクセスする。そうしておけば,万一パスワードが漏洩しても,そのデータベース以外にアクセスされることはないからである。

 OSQLユーティリティでユーザーを作るには,次のように,sp_addloginストアドプロシージャを呼び出す。

   EXECUTE sp_addlogin 作成するユーザー名, パスワード, デフォルトデータベース

 新たにユーザーを作成したら,そのユーザーに対してデータベースの使用権を割り当てる。データベースの使用権を割り当てるには,次のようにsp_grantdbaccessストアドプロシージャを呼び出せばよい。

   USE 使用権を与えるデータベース名
   EXECUTE sp_grantdbaccess 使用権を与えるユーザー名

 たとえば,businessAccountというユーザーを作り,businesssampleDBというデータベースに対する使用権限を与えるには,次のようにする(Fig.3-35)。

   EXECUTE sp_addlogin businessAccount, '適当なパスワード', businesssampleDB
   USE businesssampleDB
   EXECUTE sp_grantdbaccess businessAccount
   go

Fig.3-35 ユーザーアカウントの追加

fig3_35.gif

 もし,与えたデータベースの使用権限を取り除きたいときには,sp_revokedbaccessストアドプロシージャを次のようにして呼び出す。

   USE 使用権限を取り除きたいデータベース名
   EXECUTE sp_revokedbaccess 使用権限を取り除きたいユーザー名

 さらに,作成したユーザーアカウントそのものを削除してしまいたいときには,次のようにsp_droploginストアドプロシージャを呼び出す。

   EXECUTE sp_droplogin 削除したいユーザー名

 なお,ここではユーザーアカウントの操作にOSQLユーティリティを使ってTransact-SQLステートメントを実行する方法を示したが,SQL Server Enterprise Managerを使うと,GUIでより簡単に設定することができる。

 また,ユーザーやデータベースに対する設定で用いるTransact-SQLステートメントは,ここに示しただけではない。たとえば,「特定のユーザーに対して特定のテーブルの読み込み権限だけを与える」というように,より細かく権限を制御するためのTransact-SQLステートメントも用意されている。

 それらについての詳細は,SQL Server 7.0やTransact-SQLについての文献を参照してほしい。

prevpg.gif Chapter 3 18/22 nextpg.gif