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

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

前もって決めておく事項

既定の認証プラグイン Srp では,パスワードは 255 文字まで指定できるが, 有効な長さは約 20 バイトである.パスワードは大文字・小文字を区別する.

前準備

【体験1】isql でデータベースに接続する

Firebird のユーザ情報は,セキュリティデータベース security5.fdb(エイリアス名 security.db)に格納されている. security5.fdb にはリモートから接続できない設定になっているため, ユーザ管理の 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 に定義されており,インストールディレクトリの examples\empbuild\employee.fdb を指す.

  3. 接続の確認

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

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

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

ALTER USER 文を使う.

手順

  1. isql を起動し,サンプルデータベース employee に SYSDBA で接続する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:employee
    
  2. 「SQL>」のプロンプトで,次の SQL 文を実行する
    ALTER USER SYSDBA SET PASSWORD '<新パスワード>';
    COMMIT;
    

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

    ※ isql では COMMIT するまで変更が確定しない.

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

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

  5. 古いパスワードでは接続できなくなったことを確認する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <古いパスワード> localhost:employee
    

    「Your user name and password are not defined」というエラーになる.

考察ポイント

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

SYSDBA はすべてのデータベースのすべてのオブジェクトにアクセスできる. 日常の作業には,権限を絞った一般ユーザを使う.

手順

  1. isql を起動し,サンプルデータベース employee に SYSDBA で接続する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:employee
    
  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. isql を終了する
    EXIT;
    
  5. isql を起動し,user1 で employee に接続できることを確認する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user user1 -password <user1のパスワード> localhost:employee
    

    接続後,次を実行する.

    SELECT FIRST 5 * FROM employee;
    

    ユーザを作成しただけでは,テーブルへのアクセス権は付かない. 権限がないときは「no permission for read/select access to TABLE EMPLOYEE」というエラーになる. 確認後,「EXIT;」で終了する.

  6. isql を起動し,SYSDBA で接続して user1 に権限を付与する
    "C:\Program Files\Firebird\Firebird_5_0\isql.exe" -user SYSDBA -password <SYSDBAのパスワード> localhost:employee
    
    GRANT SELECT ON employee TO user1;
    COMMIT;
    

    このあと user1 で接続すると「SELECT FIRST 5 * FROM employee;」が実行できる.

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

    ユーザは自分自身のパスワードを変更できる. user1 で接続した状態では次のようにする.

    ALTER CURRENT USER SET PASSWORD '<新しいuser1のパスワード>';
    COMMIT;
    
  8. (後片付け)ユーザ user1 を削除する(SYSDBA で接続した状態で実行)
    DROP USER user1;
    COMMIT;
    
ヒント

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

gsec は,Firebird 2.5 以前でユーザ管理に使っていた専用コマンドである. Firebird 3 以降では非推奨(deprecated)である. gsec は複数のセキュリティデータベースを扱えず, firebird.conf の UserManager に並べたユーザ管理プラグインのうち先頭の 1 つだけを使う. 古い資料を読むときのために,対応関係を示す.

考察ポイント(まとめ)

サイト内の関連ページ

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

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