我遵循了 ubuntu 上的 firebird3.0 指南。它已经过时了,因为示例中不再有 employe.fdb
,您必须通过包含的 sql 脚本自行创建它。我的问题是,如果我使用
isql-fb
作为 sudo
,我只能创建这个数据库。我遵循了 here和 here 的建议,如果我将
localhost:
添加到路径中,现在无需 sudo 即可连接,但我仍然无法创建数据库。就像我什至没有火鸟小组可以加入一样。如果我尝试创建一个不是 sudo 的数据库,我会收到此错误:Statement failed, SQLSTATE = HY000
operating system directive access failed
-Not a directory
上的步骤操作,直到 sudo apt-get install firebird3.0-examples firebird-dev
,并且我跳过了
sudo add-apt-repository ppa:mapopa/firebird3.0
步骤,因为 firebird3.0 已经在默认存储库中。安装为我创建了一个firebird
群组。该页面缺少的重要步骤是将您自己添加到群组中firebird
。如果不这样做,您将无权访问 Firebird 嵌入式引擎(在未指定主机名时使用)使用的某些文件和/或目录,这会导致显示的错误你的问题。
使用usermod -aG firebird <yourusername>
添加您自己,然后使用
newgrp firebird
刷新当前会话中的群组列表*。然后,您可以使用 isql-fb
而不指定主机名(如 localhost)。例如,使用 README.Debian
中的 /usr/share/doc/firebird3.0-examples/examples/
中的说明创建员工示例数据库。请记住,当在 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>';
然后您可以以 SYSDBA 身份使用
:创建其他用户
CREATE USER NAMAL PASSWORD '12345';
要授予此用户创建数据库的权限,请使用 - as SYSDBA -
:
GRANT CREATE DATABASE TO USER NAMAL;
newgrp
,而是在找到此选项之前重新启动了我的虚拟机
为了精确诊断情况,您可以使用 strace 查看错误消息中提到的系统调用的确切参数。