概要
SQLiteにはGRANTやREVOKEといった権限を操作するコマンドはなく、 ユーザやアクセス権限はOSのファイルアクセス管理に準ずる。
ただし、プログラミング言語用のライブラリやコマンドラインツールには データベースファイルを読み取り専用で開く手段が準備されていることがある。
このページではコマンドラインツールの方法を記載しておく。
コマンドラインツールでデータベースを読み取り専用で開く
コマンドラインツールであれば「.open --readonly」で データベースを開くことで読み取り専用で開くことが出来る。
読み取り専用で開くとinsert や update 実行時にエラーになる。
環境
- Windows 10 64bit
- SQLite3 (3.36.0) Command-Line Shell
C:\temp>sqlite3
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open --readonly test1.db
sqlite> insert into product values (1, 'tomato');
Error: attempt to write a readonly database
ちなみに、中身が何もない空っぽのデータベースファイルを 読み取り専用で開こうとすると以下のようなエラーになる。
sqlite> .open --readonly test1.db
Error: unable to open database "test1.db": unable to open database file
note
どのバージョンから「--readonly」が使えるようになったかはよくわからん。 少なくとも手元に残っていた3.22.0では使えなかった。
SQLite 3 コマンドラインツール起動前にシェル等から読み取り専用で開く方法もある。
参考URL
-
Command Line Shell For SQLite
公式のコマンドラインツールに関するドキュメント
https://www.sqlite.org/cli.html -
SQL Features That SQLite Does Not Implement
公式の未実装機能に関するドキュメント
https://www.sqlite.org/omitted.html