无法连接到 docker 上的 Firebird 服务器



我是一个macOS用户,我得到了奇怪的错误,只是用firebird创建一个数据库。我看到有一些码头容器与火鸟运行得很好(我能够创建数据库,执行查询等),但当我试图从我的本地ISQL或razorSQL客户端(通过JDBC)连接时,我得到一些奇怪的错误,如"不可用数据库"或"无法打开文件"

我也不确定ISQL CONNECT string是如何真正工作的,因为我看到的每个网站都是不同的。

我得到了这个docker映像:(https://hub.docker.com/r/jacobalberty/firebird/)

我创建的容器是这样的:

docker run -d --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss

我的docker-machine IP是:

192.168.99.100

我试着这样连接:

CONNECT '0.0.0.0:3050://databases/test.fdb' user 'SYSDBA' password 'masterkey';
unavailable database

还有这样的:

CONNECT '192.168.99.100:/databases/test.fdb' user 'SYSDBA' password 'masterkey';
connection rejected by remote interface

CONNECT '192.168.99.100:3050:/databases/test.fdb' user 'SYSDBA' password 'masterkey';
 Statement failed, SQLSTATE = 08001
 unavailable database

当我进入docker容器时,文件在那里:

root@e4212b9f9d16:/databases# pwd
/databases
root@e4212b9f9d16:/databases# ls
test.fdb

另外,我不知道如何检查火鸟服务器是否正在运行(我猜这是因为我可以"连接"到容器内的数据库。但是docker容器肯定已经启动并运行了——在IP和端口上成功Telnet了)

我也尝试使用容器IP(172.17.0.2),但我得到一个超时

我最熟悉的mysql和SQLite从来没有碰过火鸟数据库之前,作为用户得到这个数据库,我不得不嘲笑它,开发一个应用程序使用假数据,然后连接到真正的火鸟(所以改变数据库不是一个选项)

所以,关于'创建你的火鸟服务器'的标准文档没有提到但是你在firebird.conf中,变量RemoteBindAddress必须为空

文件:

/etc/firebird/2.5/firebird.conf

行改变:

RemoteBindAddress =
#RemoteBindAddress = localhost

您的大多数问题是您的连接字符串,它应该是<host>/<port>:<database-path-or-alias>,其中离开/<port>将默认为端口3050。

这解释了你所有的问题,除了

CONNECT '192.168.99.100:/databases/test.fdb' user 'SYSDBA' password 'masterkey';
connection rejected by remote interface

因为该连接字符串是有效的。

此错误表示您能够连接到服务器,但连接被拒绝。例如,当您使用Firebird 3,但使用Firebird 2.5 ISQL/fbclient库连接,并且没有放松Firebird 3的安全设置(请参阅Firebird 3发行说明中的遗留身份验证)时,可能会发生这种情况。

为了查看服务器是否正在运行,使用:

docker ps

为了弄清楚服务器是实际启动了,还是在启动时出错了,在不使用-d的情况下启动容器,并在运行时查看日志消息:

docker run --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss

最新更新