[英]Can't connect to a firebird server on docker
我是macOS用戶,並且在使用firebird創建數據庫時遇到了奇怪的錯誤。 我看到有一些帶有firebird的碼頭容器運行得很好(我能夠創建數據庫,執行查詢等),但是當我嘗試從本地ISQL或razorSQL客戶端(通過JDBC)進行連接時,我感到有些奇怪錯誤,例如“數據庫不可用”或“無法打開文件”
我也不確定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-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
另外,我不確定如何檢查Firebird服務器是否正在運行(我想這是因為我可以“連接”到容器內的數據庫” ..但Docker容器已確定啟動並正在運行-telnet成功完成了在ip和port上)
我也嘗試使用容器IP(172.17.0.2),但是超時
我最熟悉mysql和SQLite之前從未接觸過firebird數據庫,並且當用戶獲得此數據庫時,我必須對其進行模擬,使用偽造數據開發一個應用程序,然后將其連接到真實的firebird(因此,更改數據庫是不可取的)
大多數問題是連接字符串,它應該是<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發行說明中的“ 傳統身份驗證 ”)。
因此,關於“創建您的Firebird服務器”的標准文檔沒有提及,但是您在firebird.conf上,變量RemoteBindAddress必須為空
文件:
/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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.