我在 Ubuntu 21.04 上按照 https://help.ubuntu.com/community/Firebird3.0 上的步骤操作直到 sudo apt-get install firebird3.0-examples firebird-dev,我跳过了 sudo add-apt-repository ppa:mapopa/firebird3.0 步骤,因为 firebird3.0 已经在默认存储库中。安装为我创建了一个firebird 组。
该页面缺少的基本步骤是将您自己添加到组firebird。如果您不这样做,您将无权访问 Firebird Embedded 引擎(在您未指定主机名时使用)使用的某些文件和/或目录,这会导致显示的错误你的问题。
使用usermod -aG firebird <yourusername> 添加您自己,然后使用newgrp firebird 刷新当前会话中的组列表*。然后,您可以使用isql-fb,而无需指定主机名,例如 localhost。例如,使用/usr/share/doc/firebird3.0-examples/examples/ 中的README.Debian 中的说明创建员工示例数据库。
请记住,在 Firebird 中仅指定文件名时,您使用的是其嵌入式模式,并且使用当前用户的文件系统访问权限访问文件。如果你给它添加前缀localhost:,它将使用firebird用户的文件系统访问权限通过你机器上的Firebird服务器进程进行连接。这种区别很重要,因为 firebird 用户 - 例如 - 无权访问您的主目录。
为了能够通过 Firebird Server 创建数据库,用户必须具有足够的权限才能创建数据库。默认只有 SYSDBA 用户有这个权限。
为了能够创建用户,您需要连接到一个数据库,并且该用户具有足够的权限来创建用户。
如果您还没有数据库,您可以创建一个:
create database 'localhost:<path-to-db>' user sysdba password '<your password>';
如果你已经有一个数据库,你可以使用:
connect 'localhost:<path-to-db>' user sysdba password '<your password>';
然后,您可以使用CREATE USER 以 SYSDBA 的身份创建其他用户:
CREATE USER NAMAL PASSWORD '12345';
要授予该用户创建数据库的权限,请使用 - as SYSDBA - GRANT:
GRANT CREATE DATABASE TO USER NAMAL;
* 小警告:我自己实际上并没有尝试newgrp,而是在找到此选项之前重新启动了我的虚拟机