【问题标题】:How to configure firebird 3.0 or set rights so any user can create a DB如何配置 firebird 3.0 或设置权限以便任何用户都可以创建数据库
【发布时间】:2021-11-04 23:00:24
【问题描述】:

我在 ubuntu 上关注了 this firebird3.0 指南。它已经过时了,因为示例中没有更多的employe.fdb,您必须通过包含的 sql 脚本自己创建它。我的问题是,如果我使用isql-fb 作为sudo,我只能创建这个数据库。我遵循了herehere 的建议,如果我将localhost: 添加到路径中,我现在可以在没有sudo 的情况下连接,但我仍然无法创建数据库。就像我什至没有可以添加自己的火鸟组织一样。如果我尝试创建一个不是 sudo 的数据库,我会收到此错误:

Statement failed, SQLSTATE = HY000
operating system directive access failed
-Not a directory

【问题讨论】:

  • 始终通过 localhost 连接,最初使用 SYSDBA,并查看language reference 以获取有关如何创建用户和授予他们权限的信息。

标签: ubuntu firebird rights firebird-3.0


【解决方案1】:

我在 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,而是在找到此选项之前重新启动了我的虚拟机

【讨论】:

    【解决方案2】:

    如果您运行 Firebird Server,则不应使用嵌入式模式来创建或访问数据库。如果您已停止 Firebird 服务器,请在尝试之前从 /tmp 中删除其目录。

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

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 2016-06-19
      • 2016-11-15
      • 2015-07-28
      相关资源
      最近更新 更多