概要
SQLiteにはGRANTやREVOKEといった権限を操作するコマンドはなく、 ユーザやアクセス権限はOSのファイルアクセス管理に準ずる。
ただし、プログラミング言語用のライブラリやコマンドラインツールには データベースファイルを読み取り専用で開く手段が準備されていることがある。
このページでは、コマンドプロンプトやbashといったシェルから SQLite 3 のデータベースファイルを読み取り専用で開く方法を記載しておく。
コマンド
SQLite 3 のコマンドのオプションに「-readonly」を指定してデータベースを開くことで
読み取り専用で開くことが出来る。
読み取り専用で開くとinsert や update 実行時にエラーになる。
sqlite3 -readonly DB_NAME
実行例
環境
- Windows 10 64bit
- SQLite3 (3.43.1) Command-Line Shell
C:\temp>rem # 1.
C:\temp>sqlite3 -readonly test.db
SQLite version 3.45.1 2024-01-30 16:01:20 (UTF-16 console I/O)
Enter ".help" for usage hints.
sqlite> -- # 2.
sqlite> create table test_table (id, name);
Runtime error: attempt to write a readonly database (8)
sqlite>
- 読み取り専用でtest.dbを開く
- create文を実行しようとするとエラーになるのがわかる
SQLite 3 のコマンドラインツールを起動した後でも 「.open」コマンドを使用して読み取り専用でデータベースに繋ぎなおすことができる。
参考URL
-
SQL Features That SQLite Does Not Implement
公式の未実装機能に関するドキュメント
https://www.sqlite.org/omitted.html