Firebird

オンラインドキュメント

https://firebirdsql.org/file/documentation/chunk/en/refdocs/fblangref40/firebird-40-language-reference.html

インストール

https://firebirdsql.org/en/server-packages/ からインストーラファイルをダウンロードして実行する。

使い方

sysdbaのパスワード変更

> gsec -user sysdba -password masterkey -modify sysdba -pw 新しいパスワード
1

システム管理者ユーザの作成

> gsec -user sysdba -password sysdbaのパスワード -add ユーザ名 -pw パスワード -admin yes
1

ユーザの作成

> gsec -user システム管理者ユーザ名 -password システム管理者ユーザのパスワード -add ユーザ名 -pw パスワード
1

ユーザの一覧

> gsec -user システム管理者ユーザ名 -password システム管理者ユーザのパスワード -display
1

権限の設定

システム管理権限を持つ eagle-eight、テーブル、ビュー、シーケンス、トリガー、プロシージャ作成を行える manager1、テーブルの読み書き、シーケンスの使用、プロシージャの実行を行える editor1 の作成を例に説明する。

まずgsecコマンドで各ユーザを作成する。

gsec -user sysdba -password masterkey -add eagle-eight -pw masterkey -admin yes
gsec -user eagle-eight -password masterkey -add manager1 -pw masterkey
gsec -user eagle-eight -password masterkey -add editor1 -pw masterkey
1
2
3

eagle-eightがデータベースファイルを作成する 000.sql を作成する。コマンドプロンプトで isql -q -i 000.sql -e -m を実行する。

create database 'database1.fdb' user 'eagle-eight' password 'masterkey' default character set utf8;
1

eagle-eightがmanager1にテーブル、ビュー、シーケンス、トリガー、プロシージャ作成の権限を付与する 001.sql を作成する。コマンドプロンプトで isql -q -i 001.sql -e -m を実行する。

set names utf8;
connect 'database1.fdb' user 'eagle-eight' password 'masterkey';
 
grant all table to manager1;
grant all view to manager1;
grant all sequence to manager1;
grant all procedure to manager1;
1
2
3
4
5
6
7

manager1がeditor1にテーブル media_server_mst、movie_mst の読み書き、シーケンス seq_media_server_mst_id、seq_movie_mst_id の使用、プロシージャ do_insert_movie_mst の実行の権限を付与する 003.sql を作成する。コマンドプロンプトで isql -q -i 003.sql -e -m を実行する。

set names utf8;
connect 'database1.fdb' user 'manager1' password 'masterkey';
 
grant all on media_server_mst to editor1;
grant all on movie_mst to editor1;
grant usage on sequence seq_media_server_mst_id to editor1;
grant usage on sequence seq_movie_mst_id to editor1;
grant execute on procedure do_insert_movie_mst to editor1;
1
2
3
4
5
6
7
8

システム管理権限を持たないユーザ名を一覧するSQL

select sec$user_name from sec$users where sec$admin = false
1

ユーザ定義のテーブル名を一覧するSQL

select rdb$relation_name from rdb$relations where (rdb$system_flag is null or rdb$system_flag = 0) and rdb$view_blr is null
1

ユーザ定義のビュー名を一覧するSQL

select rdb$relation_name from rdb$relations where (rdb$system_flag is null or rdb$system_flag = 0) and rdb$view_blr is not null
1

ユーザ定義のシーケンス名を一覧するSQL

select rdb$generator_name from rdb$generators where rdb$system_flag = 0
1

ユーザ定義のプロシージャ名を一覧するSQL

select rdb$procedure_name from rdb$procedures where rdb$system_flag = 0
1

ホットバックアップ

> gbak -b -user eagle-eight -password masterkey "database1.fdb" "database1_backup_20220417.fbk"
1

リストア

> gbak -r -user eagle-eight -password masterkey "database1_backup_20220417.fbk" "database1.fdb"
1