Firebird のパスワード管理(SYSDBA のパスワード変更,ユーザの作成・変更・削除)

このページでは,Firebird(2026年4月時点の最新安定版は Firebird 5.0.4)の ユーザとパスワードの管理を体験する. Firebird の管理者ユーザは SYSDBA である. Firebird 3 以降では,ユーザ管理は SQL 文(CREATE USER,ALTER USER,DROP USER)で行うのが標準であり, 旧来の専用コマンド gsec は非推奨(deprecated)となっている.

前もって決めておく事項

パスワードは他人に教えないこと.パスワードをファイルに平文で保存しないこと. 昔の版の既定パスワード masterkey をそのまま使い続けてはいけない

前準備

【体験1】isql で管理用セキュリティデータベースに接続する

Firebird のユーザ情報は,セキュリティデータベース(別名 security.db,エイリアス名 employee ではなく security.db)に格納されている. ユーザ管理の SQL 文は,何らかのデータベースに SYSDBA で接続した状態で実行できる. ここでは,付属のサンプルデータベース employee に接続して行う.

手順

  1. コマンドプロンプトを管理者として実行する

    Windows キーを押し「cmd」と入力し,「管理者として実行」を選ぶ.

  2. isql を起動し,サンプルデータベース employee に SYSDBA で接続する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:employee
    

    ※ Firebird 4.0 の場合は「Firebird_4_0」,Firebird 3.0 の場合は「Firebird_3_0」に読み替える.

    ※ 「localhost:employee」の「employee」はデータベースのエイリアス名である (実体は databases.conf に定義されており,employee.fdb を指す).

  3. 接続の確認

    次のように表示され,プロンプトが「SQL>」になれば接続成功である.

    Database: localhost:employee, User: SYSDBA
    SQL>
    
ヒント

【体験2】SYSDBA のパスワードを変更する

Firebird 3 以降の標準の方法である ALTER USER 文を使う.

手順

  1. 【体験1】の状態(SQL> プロンプト)で,次の SQL 文を実行する
    ALTER USER SYSDBA SET PASSWORD '<新パスワード>';
    COMMIT;
    

    ※ SQL 文の終わりのセミコロン「;」を忘れないこと.

    ※ Firebird のユーザ管理は通常のトランザクションの中で動くので,COMMIT を忘れないこと

  2. isql を終了する
    EXIT;
    
  3. 新しいパスワードで接続できることを確認する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <新パスワード> localhost:employee
    

    接続できたら「EXIT;」で終了する.

  4. (確認)古いパスワードでは接続できなくなったことを確認する

    古いパスワードで同じコマンドを実行し, 「Your user name and password are not defined」というエラーになることを確認する.

考察ポイント

【体験3】一般ユーザの作成,パスワード変更,削除

管理者 SYSDBA で作業する.すべてを SYSDBA で行うのではなく, 日常の作業用には権限を絞った一般ユーザを作るのが安全管理の基本である.

手順

  1. SYSDBA で接続する(【体験1】と同じ)
  2. ユーザ user1 を作成する
    CREATE USER user1 PASSWORD '<user1のパスワード>'
      FIRSTNAME 'Taro' LASTNAME 'Yamada';
    COMMIT;
    

    ※ FIRSTNAME,LASTNAME は省略できる(氏名の記録用).

  3. ユーザの一覧を確認する
    SELECT SEC$USER_NAME, SEC$FIRST_NAME, SEC$LAST_NAME, SEC$ADMIN
      FROM SEC$USERS;
    

    SYSDBA と user1 が表示されることを確認する. SEC$USERS は,ユーザ情報を参照するための仮想テーブル(モニタリングテーブルの一種)である.

  4. user1 で接続できることを確認する

    いったん「EXIT;」で終了してから,

    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user user1 -password <user1のパスワード> localhost:employee
    

    接続後,試しに次を実行してみる.

    SELECT FIRST 5 * FROM employee;
    

    employee サンプルデータベースでは PUBLIC に SELECT 権限が付与されているため参照できる. 権限が付与されていないデータベースでは「no permission for ...」というエラーになる(これが正常な動作である). 確認後「EXIT;」で終了する.

  5. user1 のパスワードを変更する(SYSDBA で接続して実行)
    ALTER USER user1 SET PASSWORD '<新しいuser1のパスワード>';
    COMMIT;
    

    なお,ユーザは自分自身のパスワードなら自分で変更できる. user1 で接続した状態で次を実行してもよい.

    ALTER CURRENT USER SET PASSWORD '<新しいuser1のパスワード>';
    COMMIT;
    
  6. (後片付け)ユーザ user1 を削除する
    DROP USER user1;
    COMMIT;
    
ヒント

【参考】旧来のコマンド gsec について

Firebird 2.5 以前では,ユーザ管理には専用コマンド gsec を使っていた. gsec は Firebird 3 以降では非推奨(deprecated)であり, 既定の認証方式(Srp)のユーザは扱えない場合がある.新規の学習・運用では SQL 文によるユーザ管理を使うこと. 古い資料を読むときのために,対応関係を示す.

考察ポイント(まとめ)

サイト内の関連ページ

Firebird のインストールは,別ページ »にまとめ

isql によるデータベース作成と SQL 体験は,別ページ »にまとめ