尝试创建文件时出现Firebird错误,权限被拒绝

时间:2015-04-29 11:40:46

标签: firebird firebird2.5

我正在尝试通过Firebird在我的主目录中创建一个Flamerobin数据库但是我总是得到

*** IBPP::SQLException ***
Context: Database::Create
Message: isc_dsql_execute_immediate failed

SQL Message : -902
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements

Engine Code    : 335544344
Engine Message :
I/O error during "open O_CREAT" operation for file "/home/user/test.fdb"
Error while trying to create file
Permission denied

即使该文件是chmod 777,文件/etc/firebird/2.5/firebird.conf也已被修改,以便:

DatabaseAccess = Full

设置为允许访问所有文件。 该服务正在运行:

$ ps ax | grep fireb
 3909 ?        S      0:00 /usr/sbin/fbguard -daemon -forever -pidfile /var/run/firebird/2.5/fbserver.pid

尽管很奇怪,netstat找不到连接端口:

netstat | grep 3050

并返回空列表。

如果我连接到现有数据库,则所有工作都可以,例如连接到

/var/lib/firebird/2.5/system/help.fdb

正确显示表格。

4 个答案:

答案 0 :(得分:3)

我看到两个可能的原因:

  1. 您提到该文件是chmod 777,这意味着该文件已存在,因此创建新数据库将失败。

  2. 您正在尝试通过Firebird服务器创建(或连接)用户文件夹中的文件(我假设您的文件)(尽管没有服务器正在运行的事实可能表明情况并非如此)。

  3. 我认为Firebird服务器没有在您的帐户下运行(但在firebird用户下),因此不允许访问您文件夹中的文件。

    您需要在Firebird用户具有足够访问权限的位置创建(或访问)数据库,或者使用本地(嵌入式)连接(尽管我不确定flamerobin是否支持该数据库。

答案 1 :(得分:3)

你必须做一些事情......首先,让我们看一下安全问题......

在文件/etc/firebird/2.5/firebird.conf

部分:DatabaseAccess必须是这样的:

DatabaseAccess Restrict /the/directory/you/want/to/put/the/database

现在,在文件/etc/firebird/2.5/aliases.conf

你输了一个别名和目录......

diryouwant = /the/directory/you/want/to/put/the/database/database.fdb

保存并重启firebird服务,如:

sudo service firebird-2.5"theversionyouhave" restart

您必须像这样更改目录所有者:

sudo chown firebird.firebird /the/directory/you/want/to/put/the/database

现在你可以毫无困难地使用flamerobin ......

答案 2 :(得分:2)

检查/ home /用户所有者和模式以及firebird进程所有者。我非常确定运行firebird的用户无法访问此目录。

答案 3 :(得分:0)

我有同样的问题,如上所述,在Oracle Linux操作系统中尝试运行firebird 2.5,无法使用gbak恢复任何数据库,同样的错误信息。
搜索之后,我找到了关于目标目录和临时目录的权限的答案 我的解决方案:以root身份:
首先重新运行firebird安装程序以授予安装没有问题;
之后,在/上创建firebird数据库的特定目录(例如,/ fdb),
将备份文件移动到此目录;
使用此命令将整个目录的所有者更改为firebird

chown firebird /fdb -R
chmod 700 firebird /fdb -R

在此之后,gbak通常适合我,以root身份运行。

参考:http://forums.devshed.com/firebird-sql-development-61/gbak-restore-linux-453690.html