このページは機械翻訳されています。英語の原文をお読みください。 English

SQL Language Extension: CREATE/ALTER/CREATE_OR_ALTER/DROP USER

通常のデータベース接続からユーザーを管理する機能を実装します。

著者:

Alex Peshkoff [email protected]

構文は次のとおりです:

CREATE USER name [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER CURRENT USER [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] CREATE OR ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] DROP USER name [ USING PLUGIN name ];

ここで、OPTIONS は以下のオプションのリストです:

- PASSWORD ‘password’

- FIRSTNAME ‘firstname’

- MIDDLENAME ‘middlename’

- LASTNAME ’lastname'

- ACTIVE

- INACTIVE

- USING PLUGIN name

また、各 TAG は次の2つの形式のいずれかを取ることができます:

name = ‘string value’

または:

DROP name

ここで、NAME は任意の有効な SQL 識別子です。

説明:

SQL 言語を使用してセキュリティデータベース内のユーザーを追加、変更、削除できるようにします。

Firebird はバージョン 3.0 以降、複数のセキュリティデータベースをサポートしています。gsec ユーティリティとサービス API はこれをサポートしておらず、ユーザー管理にこれらを使用することは非推奨です。

CREATE および DROP 句は、SYSDBA(またはセキュリティデータベースで RDB$ADMIN ロールを付与された別のユーザー)のみが使用できます。一般ユーザーは自分のパスワード、ワイドネーム、およびタグを ALTER できます。別のユーザーを変更しようとすると失敗します。また、自分自身を INACTIVE または ACTIVE にしようとする試みも失敗します。毎回自分の名前を入力する手間を省くために、簡略化された形式の ALTER CURRENT USER が用意されています。

ALTER USER ステートメントには、PASSWORD、FIRSTNAME、MIDDLENAME、LASTNAME、ACTIVE、INACTIVE、または TAGS のうち少なくとも1つが存在する必要があります。また、新しいユーザーを作成する際には PASSWORD 句が必須であることに注意してください。

PASSWORD 句はそれ自体で十分に説明がつきます。FIRSTNAME、MIDDLENAME、LASTNAME の各句も同様ですが、ユーザーに関する任意の短い情報を保存するためにも使用できます。INACTIVE/ACTIVE 句は、ユーザーをリストから削除せずにサーバーへのログインを無効にし、その機能を復元するために使用されます。USING PLUGIN 句を使用すると、デフォルトの管理プラグイン(firebird.conf の UserManager パラメータに最初にリストされているもの)だけでなく、他のプラグインでもユーザーを操作できます。gsec ユーティリティとサービス API は複数のユーザー管理プラグインをサポートしていません - 常にデフォルトのものが使用されます。

TAGS はエンドユーザー定義の属性のリストです。値の長さは255バイトを超えてはなりません。

name に値を割り当てると、新しいタグが設定されるか、既存のタグが変更されます。タグを削除するには DROP オプションを使用します。

ユーザーにタグのリストを設定する場合、現在言及されていない以前に設定されたタグは保持されます。

注意 - 非推奨の gsec によって入力された UID/GID は、SQL インターフェースではタグとして扱われます。

ユーザーのリストにアクセスするには、仮想テーブル SEC$USERS および SEC$USER_ATTRIBUTES から選択してください。

サンプル(firebird.conf で UserManager=Srp,Legacy_UserManager と仮定):

一般的な例:

CREATE USER alex PASSWORD 'test'; ALTER USER alex SET FIRSTNAME 'Alex' LASTNAME 'Peshkoff'; CREATE OR ALTER USER alex SET PASSWORD 'IdQfA'; DROP USER alex; ALTER CURRENT USER SET PASSWORD 'SomethingLongEnough' USING PLUGIN srp;

タグの操作:

ALTER USER alex SET TAGS (a='a', b='b'); NAME VALUE ================ ============================== A a B b ALTER USER alex SET TAGS (b='x', c='d'); NAME VALUE ================ ============================== A a B x C d ALTER USER alex SET TAGS (drop a, c='sample'); NAME VALUE ================ ============================== B x C sample

ユーザーリストの表示:

SELECT CAST(U.SEC$USER_NAME AS CHAR(20)) LOGIN, CAST(A.SEC$KEY AS CHAR(10)) TAG, CAST(A.SEC$VALUE AS CHAR(20)) "VALUE", U.SEC$PLUGIN "PLUGIN" FROM SEC$USERS U LEFT JOIN SEC$USER_ATTRIBUTES A ON U.SEC$USER_NAME = A.SEC$USER_NAME AND U.SEC$PLUGIN = A.SEC$PLUGIN;

LOGIN TAG VALUE PLUGIN

==================== ========== ==================== =============================== SYSDBA <null> <null> Srp ALEX B x Srp ALEX C sample Srp SYSDBA <null> <null> Legacy_UserManager

注意!

この機能はユーザー管理プラグインに大きく依存しています。レガシーのユーザー管理プラグインを使用する場合、一部のオプションが無視されることに注意してください。