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

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

我也不确定ISQL CONNECTstring是如何工作的,因为我看到的每个站点都是不同的。

我有这个docker的形象:( https://hub.docker.com/r/jacobalberty/firebird/ )

我创build了这样的容器:

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

我的docker机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集装箱已经正常运行 – 做了一个成功的远程login在ip和端口上)

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

我最熟悉的MySQL和SQLite从来没有触及过一个firebird分贝和用户得到这个数据库,我必须嘲笑它​​,开发一个应用程序使用假数据,然后连接到真正的火鸟(所以改变数据库是不是一个选项)

大部分的问题是你的连接string,它应该是<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 

由于该连接string是一个有效的。

此错误意味着您能够连接到服务器,但连接被拒绝。 例如,这可能发生在使用Firebird 3时,但是使用Firebird 2.5 ISQL / fbclient库进行连接,并没有放宽Firebird 3的安全设置(参见Firebird 3发行说明中的遗留身份validation )。

所以,有关'创build你的火鸟服务器'的标准文档没有提到,但你在firebird.conf,variablesRemoteBindAddress必须是空的

文件:

 /etc/firebird/2.5/firebird.conf 

行改变了:

 RemoteBindAddress = #RemoteBindAddress = localhost 

感谢所有的

为了确定服务器是否正在运行,请使用:

 docker ps 

为了弄清服务器是否真正启动,或者在启动时出错,请启动容器而不使用-d,并在运行时查看日志消息:

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