当前位置: 首页 > 工具软件 > Firebird > 使用案例 >

Firebird数据库的安装配置与使用

许兴文
2023-12-01

Firebird数据库的安装配置与使用

【温馨提示:本文档所有操作均在root用户下进行】

一、安装


1、rpm包方式

我选用的安装方式是 使用rpm包安装

执行以下命令进行安装:

$ rpm -ivh FirebirdSS-2.5.9.27139-0.amd64.rpm --force --nodeps

不加–force --nodeps会出现 /bin/sh is needed by xxxxxx(安装包的名字)

安装成功后查看firebird进程

安装位置默认会在/opt/firebird

安装包的详细信息显示是无法重定向安装的【Relocations : (not relocatable)】

$ ps aux | grep firebird
firebird   4684  0.0  0.0  35396   408 ?        S    Oct15   0:00 /opt/firebird/bin/fbguard -pidfile /var/run/firebird/firebird.pid -daemon -forever
firebird   4686  0.0  0.6 362008 12592 ?        Sl   Oct15   0:00 /opt/firebird/bin/fbserver

firebird的安装位置默认在/opt/firebird,进入文件夹

$ cd /opt/firebird
$ ls
aliases.conf  examples       firebird.log  IDPLicense.txt  lib      security2.fdb
bin           fb_guard       firebird.msg  include         misc     SYSDBA.password
de_DE.msg     fbtrace.conf   fr_FR.msg     intl            plugins  UDF
doc           firebird.conf  help          IPLicense.txt   README   WhatsNew

2、tar包方式

执行以下命令解压tar包:

$ tar -zxvf FirebirdSS-2.5.9.27139-0.amd64.tar.gz
# 进入解压后的文件夹
$ cd FirebirdSS-2.5.9.27139-0.amd64
# 使用install.sh进行安装
$ ./install.sh

Firebird super 2.5.9.27139-0.amd64 Installation

Press Enter to start installation or ^C to abort # 键入回车开始安装或者Ctrl+C中止安装
Extracting install data
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
update-rc.d: warning: start runlevel arguments (2 3 5) do not match firebird Default-Start values (2 3 4 5)
Starting Firebird server: Please enter new password for SYSDBA user: root123 # 此处设置用户sysdba的密码
Install completed

安装成功后查看firebird进程

$ ps aux | grep firebird
firebird 18132  0.0  0.0  35388   412 ?        S    16:54   0:00 /opt/firebird/bin/fbguard -pidfile /var/run/firebird/firebird.pid -daemon -forever
firebird 18133  0.0  0.0 230664 11048 ?        Sl   16:54   0:00 /opt/firebird/bin/fbserver

firebird的安装位置默认在/opt/firebird,进入文件夹

$ cd /opt/firebird
$ ls
aliases.conf  examples       firebird.log  IDPLicense.txt  lib      security2.fdb
bin           fb_guard       firebird.msg  include         misc     UDF
de_DE.msg     fbtrace.conf   fr_FR.msg     intl            plugins  WhatsNew
doc           firebird.conf  help          IPLicense.txt   README
# 由于tar包安装方式在安装时已经设置了sysdba用户的密码,所以这里就没有SYSDBA.password文件了

二、配置


将安装目录加入/etc/profile配置文件,以供firebird全系统可用

$ vi /etc/profile
# 在/etc/profile配置文件中加入以下字段
export FIREBIRD_HOME=/opt/firebird
export PATH=$PATH:$FIREBIRD_HOME/bin
# 加入完成后保存文件,并执行配置文件
$ source /etc/profile

查看缺省登录账户和密码(rpm安装方式)

cat /opt/firebird/SYSDBA.password

会展示以下内容,ISC_USER为用户,ISC_PASSWD为密码

# Firebird generated password for user SYSDBA is:

ISC_USER=sysdba
ISC_PASSWD=4FCEB54C

# generated on koal at time Fri Oct 15 07:00:16 UTC 2021

# Your password can be changed to a more suitable one using the
# /opt/firebird/bin/gsec utility.

◆ gsec:
  这是一个安全的系统程序,可以使用命令行的方式来创建、修改和删除数据库用户、改变密码等。必须以SYSDBA来运行gsec,以root身份调用并执行以下命令。

通过以下命令进入安全系统,以后续进行修改密码(若没有将firebird加入到配置文件中,则可以通过到安装目录的bin文件夹下./gsec -user sysdba -password 4FCEB54C

gsec -user sysdba -password 4FCEB54C

将会出现一个 GSEC> 的提示符,可以使用display命令显示当前的用户

GSEC> display
     user name                    uid   gid admin     full name
-------------------------------------------------------------------------------------
	SYSDBA                        0     0			Sql Server Administrator

缺省的密码不安全,建议更改SYSDBA的密码,可使用以下命令来更改密码

GSEC> modify SYSDBA -pw root123

命令中的root123即为新的密码,可以按照自己的需求来自行设定

三、使用


1、测试运行

◆ isql:
  这是一个交互式SQL工具,类似于Oracle的SQL*Plus和Postgresql的psql命令。可以使用它来测试和运行SQL查询。

firebird自带一个名为employee.fdb的数据库实例,可以使用其测试SQL命令,命令如下:

# 由于一些与数据库相关的系统也会安装名为isql的工具,所以尽量进入到安装目录的bin文件夹中运行isql工具
cd /opt/firebird/bin
./isql /opt/firebird/examples/empbuild/employee.fdb -u sysdba -p root123
# 会显示以下内容,表示连接到了employee数据库
Database:  /opt/firebird/examples/empbuild/employee.fdb, User: sysdba
SQL>

注意:employee.fdb每个版本的存放位置不太相同,1.5.2在/opt/firebird/examples/目录下,2.5.9在/opt/firebird/examples/empbuild/,自行在examples文件夹中寻找一下

使用show tables命令可以查看当前所有表,显示以下内容:

SQL> show tables;
       COUNTRY                                CUSTOMER
       DEPARTMENT                             EMPLOYEE
       EMPLOYEE_PROJECT                       JOB
       PROJECT                                PROJ_DEPT_BUDGET
       SALARY_HISTORY                         SALES
       
SQL> 

2、创建数据库

可以使用以下两种方式进行创建数据库

(1)打开isql工具时就指明用户

$ isql -user sysdba -password root123
# 会显示一下信息
Use CONNECT or CREATE DATABASE to specify a database
SQL> 
# 输入以下SQL语句创建数据库
SQL> CREATE DATABASE 'firstdb.fdb';
SQL> 
# 没有任何响应就说明创建成功

(2)创建数据库时指明用户

$ isql
# 会显示一下信息
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'firstdb.fdb' USER 'sysdba' PASSWORD 'root123';
SQL>
# 没有任何响应就说明创建成功,该数据库归sysdba所有
# 下面创建一个表并插入数据
$ isql firstdb.fdb -user sysdba -password root123
Database:  firstdb.fdb, User: sysdba
SQL> CREATE TABLE sales_catalog (
CON> item_id varchar(10) not null primary key,
CON> item_name varchar(40) not null,
CON> item_desc varchar(50)
CON> );
SQL> INSERT INTO sales_catalog VALUES('001', 'Aluminum Wok', 'Chinese wok');
SQL> INSERT INTO sales_catalog VALUES('002', 'Microwave Oven', '300W Microwave oven');
SQL> INSERT INTO sales_catalog VALUES('003', 'Chopsticks extra-long', '60cm chopsticks');
SQL> SELECT * FROM sales_catalog;

ITEM_ID    ITEM_NAME                                ITEM_DESC                  
=============================================================================
001        Aluminum Wok                             Chinese wok                 
002        Microwave Oven                           300W Microwave oven         
003        Chopsticks extra-long                    60cm chopsticks       

SQL> 

3、添加用户并分配权限

(1)创建用户:使用gsec工具创建用户LiuYu

创建用户的语句格式为:[add 用户名 -pw 密码 -fname 姓 -lname 名]

$ gsec -user sysdba -password root123
# 进入gsec工具输入以下语句创建用户
GSEC> add LiuYu -pw root123 -fname Liu -lname Yu
GSEC> 
# 没有任何提示,表示成功;输入以下语句查看当前所有用户
GSEC> display
     user name                    uid   gid admin     full name
-------------------------------------------------------------------------------
SYSDBA                              0     0           Sql Server Administrator
TESTADMIN                           0     0           FirstDB  Administrator
MASTERYI                            0     0           Master  Yi
LIUYU                               0     0           Liu  Yu
GSEC> 

(2)分配权限:使用isql工具给指定用户分配权限

分配权限语句格式:GRANT 权限 ON 对象 TO 用户 [with grant option]

权限:SELECT、DELETE、UPDATE、INSERT、ALL

对象:表/视图名

用户:指定的用户,PUBLIC代表所有

with grant option:可选项——让该名使用者拥有指定使用者的权限

撤销权限语句格式:REVOKE 权限 ON 对象 FROM 用户

$ isql firstdb.fdb -user sysdba -password root123
# 进入isql工具使用指定数据库firstdb.fdb
# 输入以下语句给指定用户分配指定表或视图的权限
SQL> GRANT SELECT,UPDATE,INSERT,DELETE ON sales_catalog TO LiuYu;
SQL> quit; 
# 没有提示表示语句执行成功,接下来使用新建用户操作firstdb.fdb试验一下权限是否已经分配
$ isql firstdb.fdb -user LiuYu -password root123
Database:  firstdb.fdb, User: LiuYu
SQL> SELECT * FROM sales_catalog;

ITEM_ID    ITEM_NAME                                ITEM_DESC                  
=============================================================================
001        Aluminum Wok                             Chinese wok                 
002        Microwave Oven                           300W Microwave oven         
003        Chopsticks extra-long                    60cm chopsticks             004        What is this                             762mm ammo                 

SQL> DELETE FROM sales_catalog;
SQL> INSERT INTO sales_catalog VALUES('666', 'Lucky Dog', 'You are so lucky');
SQL> SELECT * FROM sales_catalog;

ITEM_ID    ITEM_NAME                                ITEM_DESC                  
=============================================================================
001        Lucky Dog                                You are so lucky        

SQL>

四、报错


在创建数据库的过程中很有可能出现以下报错:

1、若不指明用户则会出现以下报错,意思就是未定义用户名和密码

Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

只需要在创建数据库时指明用户即可,上面的两种方式都可以。

2、在创建数据库的过程中很有可能出现以下报错

Statement failed, SQLSTATE = 08001
I/O error during “open O_CREAT” operation for file “/opt/firebird/examples/firstdb.fdb”
-Error while trying to create file
-Permission denied

这个是因为其他用户对examples这个文件夹没有写的权限,所以无法创建文件

可以考虑新建一个文件夹作为今后数据库存储的位置,将这个文件夹的权限更改为所有用户可读写

$ cd /opt/firebird
$ mkdir db
# 给db文件夹 添加其他用户的写权限
$ chmod o+w db/
# 给db文件夹 添加所有用户的读、写、执行权限
$ chmod a+rwx db/

之后再往db文件夹创建数据库就不会报错了

猜测(未验证,仅为个人猜想):

​ 用户firebird是在安装firebird之后被添加,由于安装时必须使用root权限,firebird的大部分文件的拥有者都为root,小部分文件的拥有者为firebird。

​ 个人认为可能是firebird在创建数据库时使用的是firebird用户,若向拥有者为firebird的文件夹中创建文件应该是没有问题的,而在向拥有者为root的文件夹中写入文件的时候,要看此文件夹对其他用户(也就是实际创建数据库的用户)的写权限是否开启。

 类似资料: