Firebird Cookbook 1:客户端程序使用
Firebird数据库既可以作为一个嵌入式数据库使用,也可以在客户端/服务器架构下使用。服务器fbserver是实际操作数据的程序,客户端通过TCP等方式同服务器进行通信,下达SQL指令。客户端程序isql可以连接任意位置的fbserver。
1.0 数据库系统初始化
在Windows环境下,数据库系统的启动必须读取注册表中的数据。bin目录下的instreg和instsvc分别安装注册表和服务:
instreg.exe install
>> Firebird has been successfully installed in the registry.
instsvc install -superserver -demand -guardian
>> Service "Firebird Guardian - DefaultInstance" successfully created.
>> Service "Firebird Server - DefaultInstance" successfully created.
instsvc start
>> Service "Firebird Guardian - DefaultInstance" successfully started.
守护进程会完成数据库系统的启动流程。
1.1 创建和连接数据库
isql工具可以连接并操纵数据库:
isql
>> Use CONNECT or CREATE DATABASE to specify a database.
如果连接本地数据库,则直接输入数据库文件绝对路径即可。如果采用TCP连接远程服务器,则需要加上数据库服务器的IP地址或是计算机域名:
create database ’C:/Documents/Database/Firebird/database/SCHOOL.FDB’ user ’sysdba’ password ‘masterkey’;
create database ’127.0.0.1:C:/Documents/Database/Firebird/database/SCHOOL.FDB’ user ’sysdba’ password ‘masterkey’;
create database ’WIN-P2M4Q9:C:/Documents/Database/Firebird/database/SCHOOL.FDB’ user ’sysdba’ password ‘masterkey’;
注意路径名一定使用斜杠,而不是Windows下的反斜杠!
1.2 SSL
作为一个相对简单的数据库系统,Firebird并不提供SSL连接,所有的数据都是明文传输的。但是,依然可以采用SSH之类的工具实现连接代理。考虑在Windows下没有SSH服务器,这里使用了stunnel和nginx,分别位于客户端和服务器端。
1.2.1 服务器端
默认情况下Firebird数据库服务器使用3050端口。可以使用nginx的TCP反向代理为其添加SSL:
stream {
server {
listen 127.0.0.1:9091 ssl;
ssl_protocols TLSv1.2 TLSv1.1;
ssl_certificate_key C:/Documents/Database/Firebird/database/ssl/priv.key;
ssl_certificate C:/Documents/Database/Firebird/database/ssl/cert.pem;
proxy_pass 127.0.0.1:3050;
}
}
1.2.2 客户端
stunnel是一个SSL代理,能够为没有SSL连接功能的程序提供安全连接。安装后,可在stunnel.conf文件末尾添加:
[fbclient]
accept = 9090
connect = 9091
cert = stunnel.pem
client = yes
当然,也可以考虑客户端和服务器端全部使用stunnel:
[fbserver]
accept = 9091
connect= 3050
cert = stunnel.pem
但是目前来看stunnel的性能较使用了IOCP的nginx更差。