无法连接到 docker 上的 firebird 服务器
Can't connect to a firebird server on docker
我是 macOS 用户,我在使用 firebird 创建数据库时遇到了奇怪的错误。我看到有一些带有 firebird 的码头容器 运行 很好(我能够创建数据库、执行查询等等)但是当我尝试从我的本地 ISQL 或 razorSQL 客户端连接时(通过 JDBC),我得到一些奇怪的错误,如 "unavailable database" 或 "can't open file"
我也不确定 ISQL CONNECT 字符串是如何工作的,因为我看到的每个站点都不一样。
我得到这张 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-机器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
此外,我不确定如何检查 firebird 服务器是否 运行ning(我想这是因为我可以 'connect' 到容器内的数据库'..但是docker 容器最终启动并且 运行ning - 在 ip 和端口上成功完成了 telnet)
我也尝试使用容器 IP (172.17.0.2),但超时了
我最熟悉 mysql 和 SQLite 以前从未接触过 firebird 数据库,当用户获得这个数据库时,我必须模拟它,使用假数据开发一个应用程序,然后将它连接到真正的 firebird (因此无法更改数据库)
为了查明服务器是否为运行,使用:
docker ps
为了弄清楚服务器是否真的启动了,或者在启动时出错了,在没有 -d 的情况下启动容器并在它运行时查看日志消息:
docker run --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss
你的大部分问题是你的连接字符串,它应该是 <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 发行说明中的 Legacy Authentication ).
因此,关于 'create your firebird server' 的标准文档没有提及,但您在 firebird.conf 上,变量 RemoteBindAddress 必须为空
文件:
/etc/firebird/2.5/firebird.conf
行已更改:
RemoteBindAddress =
#RemoteBindAddress = localhost
感谢所有
我是 macOS 用户,我在使用 firebird 创建数据库时遇到了奇怪的错误。我看到有一些带有 firebird 的码头容器 运行 很好(我能够创建数据库、执行查询等等)但是当我尝试从我的本地 ISQL 或 razorSQL 客户端连接时(通过 JDBC),我得到一些奇怪的错误,如 "unavailable database" 或 "can't open file"
我也不确定 ISQL CONNECT 字符串是如何工作的,因为我看到的每个站点都不一样。
我得到这张 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-机器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
此外,我不确定如何检查 firebird 服务器是否 运行ning(我想这是因为我可以 'connect' 到容器内的数据库'..但是docker 容器最终启动并且 运行ning - 在 ip 和端口上成功完成了 telnet)
我也尝试使用容器 IP (172.17.0.2),但超时了
我最熟悉 mysql 和 SQLite 以前从未接触过 firebird 数据库,当用户获得这个数据库时,我必须模拟它,使用假数据开发一个应用程序,然后将它连接到真正的 firebird (因此无法更改数据库)
为了查明服务器是否为运行,使用:
docker ps
为了弄清楚服务器是否真的启动了,或者在启动时出错了,在没有 -d 的情况下启动容器并在它运行时查看日志消息:
docker run --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss
你的大部分问题是你的连接字符串,它应该是 <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 发行说明中的 Legacy Authentication ).
因此,关于 'create your firebird server' 的标准文档没有提及,但您在 firebird.conf 上,变量 RemoteBindAddress 必须为空
文件:
/etc/firebird/2.5/firebird.conf
行已更改:
RemoteBindAddress =
#RemoteBindAddress = localhost
感谢所有