firebird,Bad File Descriptor /您的用户名和密码未定义

时间:2016-12-09 16:30:15

标签: macos firebird

我正在尝试在我的mac(os 10.12)上设置一个测试环境,它需要Fishbowl / Firebird DB。无论我做什么,我都会在这两个错误之间来回反复:

isql localhost:/Users/me/Fishbowl/database/data/EXAMPLE.FDB

给了我:

  

您的用户名和密码未定义。问你的数据库   管理员设置Firebird登录。

使用gsec创建用户或更改密码的任何事情:

  

语句失败,SQLSTATE = HY000操作系统指令stat   失败   -Bad文件描述符

这是非常令人沮丧的。 Fishbowl客户端本身似乎对这个数据库很好。我有chmod 770 / tmp / firebird目录,甚至尝试chown example.fdb文件本身。

有人能告诉我如何从我的Java应用程序或命令行中获取此数据库吗?两种方式都会产生这些错误。

1 个答案:

答案 0 :(得分:2)

1)您的连接行以“localhost:”开头。这意味着您使用TCP / IP连接来访问数据库服务器。并且数据库服务器在单独的进程中运行。这意味着chmodchown无关紧要,只要有一个firebird守护程序服务器在TCP端口上运行和监听(默认为3050 AFAIR,您可以在文本文件中读取安装的值{{ 1}})。

实际上,存在所谓的“嵌入式服务器”或“嵌入式模式”,其中服务器作为DLL / SO库加载到应用程序中。但是连接字符串不能有网络协议前缀,因此不应该是你的情况。

2)您可以在http://firebirdsql.org/manual/isql-switches.html检查文档,以在isql命令行中指定您的用户和密码。 Firebird有一个内置的超级用户,即“SYSDBA”。关于密码,它可能有点复杂......它与Firebird版本和平台不同

2.0)无论服务器安装可能设置了什么SYSDBA密码,如果服务器与某个应用程序捆绑在一起,则所述应用程序可以稍后覆盖它。然后,您可能需要联系应用程序开发人员或尝试删除捆绑的FB并安装您自己的vanilla,这可能会导致应用程序无法正常运行。

2.1)FB 2.x的Windows安装将“默认”SYSDBA密码设置为“masterkey”(实际上只有8个第一个符号)

2.2)FB 2.x的Linux安装会生成一个随机的SYSDBA密码并将其保存到Firebird文件夹中的文本文件中。

2.3)MacOS?不知道。也许它更接近Linux而不是Windows。因此,尝试找到这样的文本文件并尝试“masterkey”

2.4)使用FB 3,认证方法和配置进行了大修,所以......所以很难说出具体的内容。至少对我而言。

3)我不知道Fishbowl是什么,但谷歌建议:https://www.fishbowlinventory.com/wiki/Fishbowl_for_Mac 如果是这样,那么检查该页面的底线示例。他们强调你应该firebird.conf所有这些命令。这也是有道理的,因为

3.1)Firebird守护程序可能启用了“受信任的身份验证”,将FB用户映射到操作系统用户。在UNIX上至少将sudo映射到SYSDBA。在Windows上 - root(但它已本地化)。这不必启用,但如果是Administrator UNIX命令正是使应用程序与OS超级用户授权一起运行的原因,并且可能解释了命令行示例中缺少用户和密码。

3.2)Firebird嵌入式服务器/模式作为应用程序进程的一部分工作,特别是在UNIX上的CS(Classic Server)程序包中,命令行实用程序往往属于此模式。然后,它需要以sudo运行才能从Firebird安全数据库中读取高度敏感的数据,因此需要root该命令。当然,我不认为你的sudo命令可能在嵌入模式下运行 - 因为你确实指定了“localhost:”前缀。但是上面wiki链接的示例 - 备份和恢复 - 它们使用本地连接字符串,所以它们可能是以嵌入式运行的。所以这可能会给你另一个提示 - 尝试从连接字符串和isql isql中删除“localhost:”前缀而不是从普通用户运行它。这几乎不是正常的模式,但出于测试目的,为什么不。

希望这有帮助。

PS。你也可以试试这个Firebird IDE - 它很简单,但是再次出于测试目的...... http://www.flamerobin.org/dokuwiki/wiki/manual