如何配置 firebird 3.0 或设置权限以便任何用户都可以创建数据库

问题描述 投票:0回答:3

我遵循了 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


ubuntu firebird rights firebird-3.0
3个回答
4
投票
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 嵌入式引擎(在未指定主机名时使用)使用的某些文件和/或目录,这会导致显示的错误你的问题。

使用 

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

:
创建其他用户 CREATE USER NAMAL PASSWORD '12345';

要授予此用户创建数据库的权限,请使用 - as SYSDBA - 

GRANT

:
GRANT CREATE DATABASE TO USER NAMAL;


* 小警告:我自己实际上并没有尝试

newgrp,而是在找到此选项之前重新启动了我的虚拟机


    


0
投票

为了精确诊断情况,您可以使用 strace 查看错误消息中提到的系统调用的确切参数。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.