macOS 上的 Firebird 3,本地连接失败并显示:无法访问锁定文件目录 /tmp/firebird/

Firebird 3 on macOS, local connection fails with: Can not access lock files directory /tmp/firebird/

我已经从 firebirdsql.org 提供的软件包中安装了 firebird 3.0。

如果我尝试使用本地连接到数据库: isql employee -user SYSDBA 它失败了:

Can not access lock files directory /tmp/firebird/

因此将 read/write/execute 权限添加到 /tmp/firebird/
sudo chmod a+rwx /tmp/firebird/
并再次执行命令产生:

Statement failed, SQLSTATE = 08001
I/O error during "open" operation for file "/tmp/firebird/fb_init"
-Error while trying to open file
-Unknown error: -1

如果我对调用进行 sudo,这一切都会起作用,但这真的有必要吗?

在 macOS 上使用本地连接到 firebird 数据库的正确方法是什么?

我在 firebird 问题跟踪器中发现了 CORE-3871 问题,它描述了问题及其解决方案。尝试打开本地连接的用户必须是 firebird 用户组的成员。

因此,使用以下命令将用户添加到 mac bash 上的 firebird 组:
sudo dseditgroup -o edit -a myusername -t user firebird

如果您尝试打开 firebird 附带的示例数据库员工,则还需要授予该组对 employee.fdb:
的写入权限 sudo chmod g+w /Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb

现在 /Library/Frameworks/Firebird.framework/Resources/bin/isql employee -user SYSDBA 应该工作

我只输入了-p和密码就可以了。有效。

您当前的命令创建 Firebird Embedded 数据库引擎以连接到数据库。为此,您当前的 OS 用户需要对数据库文件具有足够的访问权限。有关如何解决该问题的详细信息,请参阅 .

另一种解决方案 - 如果您有 Firebird 服务器 运行 - 是通过 Firebird 服务器进程进行连接,例如使用 isql localhost:employee -user sysdba -password <sysdbapassword>。然后将应用用户 运行 Firebird 服务器进程的文件权限。但是,在这种情况下,您需要在连接时指定密码,因为无密码身份验证仅适用于 Firebird 嵌入式连接。