无法连接到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