我是一个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