SQLite DB文件可以是只读的吗?

ajl*_*toz 5 sqlite perl file-permissions readonly

来自SQLite DB的信息通过Web服务器(显示在HTML浏览器中)呈现给用户.数据库由独立于Web服务器的小应用程序一次性加载.无法从用户浏览器更改DB数据(这是只读服务).

由于Web服务器具有自己的用户标识,因此它使用"其他"权限访问SQLite DB文件.出于安全原因,我想将DB文件权限设置为rw-rw-r--.

不幸的是,通过此权限集,我收到一条警告attempt to write a readonly database at line xxx,指出有关SELECT事务的行(原则上是只读的).当然,我没有结果.

如果权限更改为rw-rw-rw,一切正常,但这意味着每个人都可以篡改数据库.

是否有任何理由不能以只读方式访问SQLite DB?

是否存在需要写访问的"幕后"处理,即使对于SELECT事务也是如此?

查看StackOverflow表明人们通常会抱怨相反的情况:遇到只读访问权限,阻止写入数据库.我的目标是保护我的数据库免受任何更改尝试.

对于完整的故事,我的Web应用程序已编写Perl并使用DBD::SQLite

ajl*_*toz 1

这个问题的答案中给出了解决方案Perl DBI 在子类化 DBI 时将设置 SQLite DB cache_size 视为写入操作

事实证明,AutoCommit对于只读 SQLite DB 不能将其设置为 0。在只读数据库情况下显式强制其为 1 解决了该问题。

感谢所有提供线索和线索的人。