firebird-3-quickstartguide
firebird-3-quickstartguide
Table of Contents
1. About this guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. The Firebird licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Installing Firebird . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Installation kits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Installing the Firebird server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.1. Before installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.2. Installation drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.3. Installation script or program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.4. Server modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.5. Installing on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.6. Installing on Linux and other Unix-like platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3. Installing multiple servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4. Testing your installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4.1. Pinging the server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4.2. Making sure that the Firebird server is running. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5. Performing a client-only install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.5.1. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.5.2. Linux and some other Posix clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4. Default disk locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Server configuration and management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1. User management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.1. Changing the SYSDBA password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.2. Adding Firebird user accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1.3. The security database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.1.4. Appointing co-administrators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2. Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.3. Administration tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6. Working with databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1. Connection strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1.1. Local connection strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1.2. TCP/IP connection strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.1.3. NetBEUI connection strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.1.4. URL-style connection strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.1.5. Third-party programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2. Connecting to an existing database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2.1. Connecting with isql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1
Table of Contents
2
Chapter 1. About this guide
Before you read on, verify that this guide matches your Firebird version. This
document covers Firebird 3. For all other Firebird versions, get the corresponding
Quick Start Guide at https://www.firebirdsql.org/en/documentation/.
3
Chapter 2. The Firebird licenses
• Use of the software is free, even for commercial purposes. You may also redistribute the
software, separately or with a product of your own, but you may not claim ownership or credit
for it. Any license notices included with Firebird must remain intact.
• You may modify and recompile the Firebird source code or parts of it. You may distribute such
modified versions, but if you do so, you must document your modifications and make them
publicly available, at no cost, under the same license as the original code.
• You may include Firebird source code (modified or not) in a larger work and distribute that
larger work, in source and/or compiled form, under a license of your own choosing. You need
not publicize the source code for the entire larger work, but you must fulfill the license
conditions for the parts that were taken from Firebird, whether they were modified or not.
Please notice that the above is a simplified overview. Only the original license texts are legally
binding. You can find them here:
https://www.firebirdsql.org/ipl/ (IPL)
https://www.firebirdsql.org/idpl/ (IDPL)
4
Chapter 3. Installing Firebird
...where bbbbb is the build number (32483 for the initial 3.0.0 release) and p the packaging number
(usually 0 or another low one-digit number).
Firebird 3 packages will also undoubtedly wind up in various Linux distributions and their online
repositories. These will have their own naming schemes.
It is almost always advisable to uninstall any previous Firebird installations completely (after
you’ve read the next paragraph!) and also hunt the Windows system dirs for old copies of gds32.dll
and fbclient.dll. If you’re using Linux, the uninstall scripts should have removed any copies
and/or symlinks in /usr/lib[64], but it won’t hurt to look if anything named libfbclient. or
libgds. is still lying around.
Furthermore, you should be aware that Firebird 3 won’t open databases that were created by older
versions. So before taking down your existing setup, you should back up all your databases in order
that you can restore them later under Firebird 3.
You may also want to back up your old security database security2.fdb. Firebird 3 comes with an
SQL script security_database.sql (located in misc/upgrade/security) that will upgrade the old
5
Chapter 3. Installing Firebird
security database to Firebird 3, preserving all information except SYSDBA's and except any
passwords. For more information, see Compatibility Issues :: Upgrading a v.2.x Security Database in
the Firebird 3 Release Notes.
The Firebird server — and any databases you create or connect to — must reside on a hard drive
that is physically connected to the host machine. You cannot locate components of the server, or
any database, on a mapped drive, a filesystem share or a network filesystem. (Well, you can, but
you shouldn’t, and this technique isn’t covered here.)
You can mount a read-only database on a CD-ROM drive, but you cannot run
Firebird server from one.
Some installers ask you to choose between Classic, SuperClassic and Superserver mode. What are
they?
• Classic mode (aka MultiProcess) involves a single listening process that spawns off an additional
process for each client connection. Using a locking mechanism, it allows shared connections to
database files.
• Superserver (ThreadedDedicated) is also a single server process with threads handling client
connections. There is a single, common database page cache. The server requires exclusive
access to each database file it opens (hence the Dedicated).
Each mode is fully stable and there is no reason to categorically prefer one to the other. Of course,
you may have your own specific considerations. When in doubt, just follow the installer default for
now. Changing the server mode later can be done via the configuration file firebird.conf and
requires a restart but not reinstallation.
Users of Firebird 2.5 or earlier: please notice that as from Firebird 3, Superserver
fully supports the use of multiple processors/cores out of the box, so lack of SMP
support is no longer a reason to avoid it.
6
Chapter 3. Installing Firebird
Make sure you run the installer program as Administrator (i.e. right-click on the executable and
choose “Run as Administrator”) or you may run into permission problems later!
On Windows server platforms Firebird will run as a system service by default, but during
installation you can also choose to let it run as an application. Don’t do this unless you have a
compelling reason.
The installer will also ask if you want to enable authorization for legacy (i.e. pre-3.0) Firebird
clients. If security is a concern (as it should be), don’t allow this or allow it only temporarily while
you upgrade your existing clients to Firebird 3.0. The legacy connection method sends passwords
over the wire unencrypted; it also limits the usable length of the password to 8 characters.
During installation you have the option of providing a password for Firebird’s superuser, SYSDBA.
Firebird passwords may be up to 255 bytes long, but due to the nature of the hashing algorithm the
“effective length” is around 20 bytes, so it’s not very useful to enter a password that’s much longer
than that. Notice however that if you do enter such a password, you must supply it in its full length
every time you connect — it won’t work if you truncate it to the first 20 characters!
7
Chapter 3. Installing Firebird
The Firebird Guardian is a utility that monitors the server process and tries to restart it if it
terminates abnormally. During a Windows install, you can opt to use the Guardian when running
in SuperClassic or Superserver mode. However, since modern Windows systems have the facility to
watch and restart services, there is no reason to use the Guardian if Firebird runs as a service
(which it should).
In all cases, read the Release Notes for the Firebird version you’re going to install. There may be
significant variations from release to release of any Posix operating system, especially the open
source ones. Where possible, the build engineers for each Firebird version have attempted to
document any known issues.
Aside from being packaged with the download kits, Release Notes for all officially released versions
of Firebird can also be found at https://www.firebirdsql.org/en/release-notes/.
If you have a Linux distribution that supports rpm installs, consult the appropriate platform
documentation for instructions about using RPM Package Manager. In most distributions you will
have the choice of performing the install from a command shell or through a GUI interface.
For Linux distributions that cannot process rpm programs, and for Unix flavours for which no .rpm
kit is provided, use the .tar.gz kit. Quite often, installation is just a matter of untarring the archive
and running install.sh. In some cases, the Release Notes or packed Readmes may instruct you to
edit the scripts and make some manual adjustments.
Also read the chapter Configuring the Port Service on Client and Server in the Firebird 1.5 (!) Release
Notes:
https://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes15.html#config-port
https://www.firebirdsql.org/file/documentation/release_notes/Firebird-1.5.6-ReleaseNotes.pdf#
page=96
8
Chapter 3. Installing Firebird
this point, it is assumed that you will use the recommended TCP/IP network protocol for your
Firebird client/server connections. (On Windows networks, NetBEUI is also supported.)
The ping command — available on most systems — is a quick and easy way to see if you can connect
to a server machine via the network. For example, if your server’s IP address in the domain that is
visible to your client is 192.13.14.1, go to a command shell on the client machine and type the
command
ping 192.13.14.1
substituting this example IP address with the IP address that your server is broadcasting. If you are
on a managed network and you don’t know the server’s IP address, ask your system administrator.
Of course, you can also ping the server by its name, if you know it:
ping vercingetorix
If you are connecting to the server from a local client — that is, a client running on the same
machine as the server — you can ping the virtual TCP/IP loopback server:
ping localhost
or
ping 127.0.0.1
If you have a simple network of two machines linked by a crossover cable, you can set up your
server with any IP address you like except 127.0.0.1 (which is reserved for a local loopback server)
and, of course, the IP address which you are using for your client machine. If you know the “native”
IP addresses of your network cards, and they are different, you can simply use those.
Once you have verified that the server machine is reachable from the client, you can go on to the
next step.
Most — but not all — installation packages start up the Firebird server as one of the final steps
during installation, and also make sure that Firebird is started at every reboot.
9
Chapter 3. Installing Firebird
The following sections show you how to test the server on each platform.
Use the top command in a command shell to inspect the running processes interactively. If a
Firebird 3 server is running, you should see a process named firebird and possibly also fbguard
(the Guardian process).
The following screen shows the output of top, restricted by grep to show only lines containing the
string firebird:
As an alternative to top, you can use ps -ax or ps -aux and pipe the output to grep.
Another way of testing the server after installation is by starting a Firebird client (e.g.
/opt/firebird/bin/isql) and connecting to a database or creating one. These operations are
described later in this guide.
If it turns out that the server hasn’t been started after all, you may need to do this manually, e.g.
with /etc/init.d/firebird start or systemctl start firebird and systemctl enable firebird,
depending on the type of Linux system and your Firebird installation package.
This illustration shows the Services applet display on Windows 7. The appearance may vary from
one Windows server edition to another.
10
Chapter 3. Installing Firebird
You should at least find the Firebird server in the services listing. The Guardian may or may not be
running, depending on the choices you made during installation. If you didn’t opt to start the server
at the end of the installation process, you may do so now by right-clicking on the Firebird entry (or
the Guardian) and choosing Start.
A flashing icon indicates that the server is in the process of starting up (or at least trying to do so). A
red icon, or an icon with an overlying red stop sign, indicates that startup has failed.
One way to make 100% sure if the server is running or not is to press Ctrl + Alt + Del and look for
the firebird process (and possibly fbguard) in the task list. You may need to check the box “Show
processes of all users” for these processes to become visible.
On some occasions, you may need to start the Guardian or server once explicitly via the Start menu
even if you opted for “Start Firebird now” at the end of the installation process. Sometimes a reboot
is necessary.
You can shut the server down via the menu that appears if you right-click on the tray icon. Notice
that this also makes the icon disappear; you can restart Firebird via the Start menu.
In Classic mode (but not SuperClassic!) a new process is launched for every
connection, so the number of firebird processes will always equal the number of
11
Chapter 3. Installing Firebird
client connections plus one. Shutdown via the tray icon menu only terminates the
first process (the listener). Other processes, if present, will continue to function
normally, each terminating when the client disconnects from the database. Of
course, once the listener has been shut down, new connections can’t be made.
Firebird can install symlinks or copies named after the 1.0 libs (with the “old” InterBase names), to
maintain compatibility with third-party products which need these files.
Some extra pieces are also needed for the client-only install.
3.5.1. Windows
At present, no separate installation program is available to install only the client pieces on a
Windows machine. If you are in the common situation of running Windows clients to a Linux or
other Unix-like Firebird server (or another Windows machine), you need to download the full
Windows installation kit that corresponds to the version of Firebird server you install on your
server machine.
Fortunately, once you have the kit, the Windows client-only install is a breeze. Just run the
installation program and when you arrive at the “Select Components” screen, choose one of the
client-only options from the drop-down list or uncheck the “Server Components” checkbox.
A small-footprint client install program for Linux clients is not available either. Additionally, some
Posix flavours — even within the Linux constellation — have somewhat idiosyncratic requirements
for filesystem locations. For these reasons, not all *x distributions for Firebird even contain a client-
only install option.
For most Linux flavours, the following procedure is suggested for a manual Firebird client-only
install. Log in as root for this.
1. Look for libfbclient.so.3.0.n (n being the patch version number) in /opt/firebird/lib on the
machine where the Firebird server is installed. Copy it to /usr/lib on the client (or /usr/lib64 if
both server and client are 64-bits).
ln -s /usr/lib/libfbclient.so.3.0.n /usr/lib/libfbclient.so.2
ln -s /usr/lib/libfbclient.so.2 /usr/lib/libfbclient.so
12
Chapter 3. Installing Firebird
If you’re running applications that expect the legacy libraries to be present, also create the
following symlinks:
ln -s /usr/lib/libfbclient.so /usr/lib/libgds.so.0
ln -s /usr/lib/libfbclient.so /usr/lib/libgds.so
3. Copy firebird.msg to the client machine, preferably into the /opt/firebird directory. If you place
it somewhere else, create a system-wide permanent FIREBIRD environment variable pointing to
the right directory, so that the API routines can locate the messages.
4. Optionally copy some of the Firebird command-line tools — e.g. isql — to the client machine.
Instead of copying the files from a server, you can also pull them out of a Firebird tar.gz kit.
Everything you need is located in the /opt/firebird tree within the buildroot.tar.gz archive that’s
packed inside the kit.
13
Chapter 4. Default disk locations
4.1. Linux
The following table shows the default component locations of a Firebird installation on Linux.
Some of the locations may be different on other Unix-like systems, or on certain Linux
distributions.
The usual symlinks (*.so.2, *.so) are (actually, the real stuff is in
created. Legacy libgds.* symlinks are $(install)/lib, but you should use the
also installed. links in /usr/lib[64])
4.2. Windows
In the table below, <ProgramDir> refers to the Windows programs folder. This is usually “C:\Program
Files” but may also be a different path, e.g. “D:\Programmi”. Likewise, <SystemDir> refers to the
Windows system directory. Be sure to read the notes below the table, especially if you’re running
Firebird on a 64-bit Windows system.
14
Chapter 4. Default disk locations
Installation - <ProgramDir>\Firebird\Firebird_3_0
directory (referred
to hereafter as
$(install))
If you run Firebird on a 64-bit system, make sure to also read the next note.
On 64-bit Windows systems, the “Program Files” directory is reserved for 64-bit
programs. If you try to install a 32-bit application into that folder, it will be auto-
15
Chapter 4. Default disk locations
In the same vein, the System32 directory is reserved for 64-bit libraries. 32-bit
libraries go into SysWOW64. That’s right: 64-bit libraries are in System32, 32-bit
libraries in SysWOW64.
If you’re not aware of this, you may have a hard time locating your 32-bit Firebird
components on a 64-bit Windows system.
(Incidentally, WOW stands for Windows on Windows. Now you can work out for
yourself what LOL means.)
16
Chapter 5. Server configuration and management
One Firebird account is created automatically as part of the installation process: SYSDBA. This
account has all the privileges on the server and cannot be deleted. Depending on version, OS, and
architecture, the installation program will either
• generate a random password and store that in the file SYSDBA.password within your Firebird
installation directory.
If the password is masterkey and your server is exposed to the Internet at all — or even to a local
network, unless you trust every user with the SYSDBA password — you should change it immediately.
Fire up isql or another Firebird client and connect to a database. In this example, the “employee”
example database is used, because its alias is always present in a freshly installed Firebird setup:
The SET keyword is optional, and instead of USER SYSDBA you can also use CURRENT USER, which
always refers to the user you are logged in as.
If the command succeeds, you won’t get any feedback. Instead, isql will just print the next “SQL>”-
17
Chapter 5. Server configuration and management
prompt, thus indicating that all is well and your further input is awaited.
Please notice that unlike “regular” user names, Firebird passwords are always case sensitive.
Firebird allows the creation of many different user accounts. Each of them can own databases and
also have various types of access to databases and database objects it doesn’t own.
Assuming you are connected to a database as SYSDBA, you can add a user account as follows:
Tags are optional key-value pairs that can be freely defined by the user. The key (tag name) must be
a valid SQL identifier, the value a non-NULL string of at most 255 bytes.
Only SYSDBA and co-admins can use all these commands. Ordinary users can change their own
parameters (such as password, name parts and tags, but not active/inactive) using ALTER USER name
or ALTER CURRENT USER. It is not possible to change an account name.
Examples:
18
Chapter 5. Server configuration and management
Firebird user accounts are kept in a security database, which normally resides in the installation
directory and is called security3.fdb (alias: security.db). Except in the case of so-called embedded
connections (more about those later in this guide), connecting to a database always involves the
security database, against which the user credentials are verified. Of course this is done
transparently; the user doesn’t have to make an explicit connection to the security database.
However, in Firebird 3 this is not the end of the story. Firebird now allows the use of multiple
security databases on a system, each security database governing a specific set of databases. A
database can even act as its own security database.
Showing how to set this up is outside the scope of this Quick Start Guide. You can find full details in
the Release Notes, chapter Security. But it is important to realise that if a system has multiple
security databases, managing user accounts while connected to a database will always affect the
accounts in the security database that governs that specific database. To be on the safe side, you
may want to connect to the security database itself before issuing your user management
commands. Connecting to the security database used to be forbidden in recent versions of Firebird,
but is now once again possible, albeit by default only locally (which means that even the localhost
route is blocked).
Note: What follows here is not essential knowledge for beginners. You can skip it if you like and go
on to the Security section.
In Firebird 2.5 and up, SYSDBA (and others with administrator rights) can appoint co-administrators.
This is done with the GRANT ADMIN ROLE directive:
The first command creates user bigbill as a Firebird administrator, who can add, alter and drop
users. The second command grants administrator privileges to the existing user littlejohn.
To revoke administrator privileges from an account, use ALTER USER … REVOKE ADMIN ROLE.
Notes
• GRANT ADMIN ROLE and REVOKE ADMIN ROLE are not GRANT and REVOKE statements,
although they look that way. They are parameters to the CREATE and ALTER USER
statements. The actual role name involved here is RDB$ADMIN. This role also
exists in regular databases; more about that in a minute.
• Every user who has received administrator rights can pass them on to others.
Therefore, there is no explicit WITH ADMIN OPTION.
19
Chapter 5. Server configuration and management
• Just for completeness, administrators can also grant admin rights to an existing
user by connecting to the security database and issuing a regular GRANT
statement:
• Co-admins can create, alter and drop users, but they have no automatic privileges in regular
databases, like SYSDBA has.
• Unlike SYSDBA, co-admins must specify the RDB$ADMIN role explicitly if they want to exert their
rights as system administrator:
For reasons explained elsewhere in this guide, connecting to the security database like this may
fail if a Superserver is running. On Windows, you may circumvent this by prepending xnet:// to
the database path or alias, but on Posix, you’re stuck. The only solution there is to grant the co-
admin the RDB$ADMIN role in at least one regular database as well. (A database that uses the
security database in question, of course.) This is done in the usual way that roles are granted:
Grantors can be the database owner, SYSDBA, and every other user who has the RDB$ADMIN role in
that database and has specified it while connecting. Every RDB$ADMIN member in a database can
pass the role on to others, so again there is no WITH ADMIN OPTION. Once the co-admin has
obtained the role, he can connect to the (regular) database with it and use the SQL user
management commands. It’s not the most elegant of solutions, but it works.
Please remember:
The RDB$ADMIN role in a database gives the grantee SYSDBA rights in that database
only!
◦ If it is the security database, the grantee can manage user accounts, but has
no special privileges in other databases.
◦ If it is a regular database, the grantee can control that database like he was
SYSDBA, but again has no special privileges in other databases, and has no
user administration privileges.
20
Chapter 5. Server configuration and management
5.2. Security
Firebird 3 offers a number of security options, designed to make unauthorised access as difficult as
possible. Be warned however that some configurable security features default to the old, “insecure”
behaviour inherited from InterBase and earlier Firebird versions, in order not to break existing
applications.
It pays to familiarise yourself with Firebird’s security-related configuration parameters. You can
significantly enhance your system’s security if you raise the protection level wherever possible.
This is not only a matter of setting parameters, by the way: other measures involve tuning
filesystem access permissions, an intelligent user accounts policy, etc.
Below are some guidelines for protecting your Firebird server and databases.
Also, anybody with filesystem-level access to a database can make an embedded connection to it
posing as any Firebird user (including SYSDBA) without having his credentials checked. This can
be especially disastrous if it concerns the security database!
As a rule, only the Firebird server process should have access to the database files. Users don’t
need, and should not have, access to the files — not even read-only. They query databases via the
server, and the server makes sure that users only get the allowed type of access (if at all) to any
objects within the database.
As a relaxation of this rule, most Firebird configurations allow users to create and use databases
21
Chapter 5. Server configuration and management
in their own filesystem space and make embedded connections to them. Since these are their
files and their data, one may argue that unrestricted and possibly destructive access should be
their own concern, not yours.
If you don’t want or need this relaxation, follow the instructions in the next item.
#Providers = Remote,Engine12,Loopback
Now, either remove the hash mark and the Engine12 provider (this is the one that makes the
embedded connections), or — better — add an uncommented line:
Providers = Remote,Loopback
The Remote provider takes care of remote connections; the Loopback provider is responsible for
TCP/IP connections via localhost, as well as (on Windows) WNET/NetBEUI and XNET
connections to databases on the local machine. All these connection types require full
authentication and have the server process, not the user process, open the database file.
Please notice that you can also set the Providers parameter on a per-database basis. You can set a
default in firebird.conf as shown above, and then override it for individual databases in
databases.conf like this:
bigbase = C:\Databases\Accounting\Biggus.fdb
{
Providers = Engine12,Loopback
}
The first line defines the alias (see next item), and everything between the curly brackets are
parameters for that specific database. You’ll find databases.conf in the same directory as
firebird.conf. Refer to the Release Notes, chapter Configuration Additions and Changes, section
Per-database Configuration, for more information about the various parameters.
Aliases are listed in the file databases.conf, in this format on Windows machines:
poker = E:\Games\Data\PokerBase.fdb
22
Chapter 5. Server configuration and management
blackjack.fdb = C:\Firebird\Databases\cardgames\blkjk_2.fdb
And on Linux:
books = /home/bookworm/database/books.fdb
zappa = /var/firebird/music/underground/mothers_of_invention.fdb
Giving the alias an .fdb (or any other) extension is fully optional. Of course if you do include it,
you must also specify it when you use the alias to connect to the database.
Aliases, once entered and saved, take effect immediately. There is no need to restart the server.
Note that this is not the same thing as the filesystem-level access protection discussed earlier:
when DatabaseAccess is anything other than Full, the server will refuse to open any databases
outside the defined scope even if it has sufficient rights on the database files.
1. Srp (Secure Remote Password): The user must identify him/herself with a Firebird username
and password, which the server checks against the security database. The maximum
effective password length is around 20 bytes, although you may specify longer passwords.
Wire encryption is used.
2. Win_Sspi (Windows Security Support Provider Interface): The user is logged in automatically
with his Windows account name.
• AuthServer determines how a user can connect to the local server. It is usually “Srp” or, on
Windows machines, “Srp, Win_Sspi”. In the latter case, the user will be authenticated with
his Windows login if he fails to supply user credentials (causing the Srp method, which is
tried first, to fail).
• AuthClient defines how the local client tries to authenticate the user when making a
connection. It is usually “Srp, Win_Sspi, Legacy_Auth”, allowing the user to connect to pre-
Firebird-3 servers on remote machines.
If Win_Sspi and/or Legacy_Auth are allowed on the server side, you must also set the WireCrypt
parameter to Enabled or Disabled, but not Required.
23
Chapter 5. Server configuration and management
Likewise, if a server (not a client!) supports Legacy_Auth, the UserManager parameter must be set
to Legacy_UserManager instead of Srp. (The default Srp user manager can still be addressed by
adding USING PLUGIN SRP to your user management commands.)
The AuthServer, AuthClient, WireCrypt and UserManager parameters are all set in firebird.conf en
can be overridden per database in databases.conf.
Please notice: enabling Win_Sspi on the server activates the plugin but doesn’t grant Windows
accounts any type of access to databases yet. Logging in to, say, the employee database without
credentials (and making sure no embedded connection is made) will result in this error
message:
In other words: “We know who you are (because the Win_Sspi plugin identified you) but you
can’t come in.”
The solution is to create, as SYSDBA, a global mapping that gives any Windows account access to
databases — but no special privileges — under the same name. This is done with the following
command:
Trusted_auth is just a chosen name for the mapping. You may use another identifier. From any
user means that the mapping is valid for any user authenticated by the Win_Sspi plugin. To user
indicates that every user will be made known under his own Windows account name in each
database he connects to. If instead we had specified to user bob, then every Windows user
authenticated by the Win_Sspi plugin would be bob in every database.
USER
===============================
SOFA\PAUL
where the client process directly opens the database file, the user is also logged
in under his Windows account name if he doesn’t provide a user name when
24
Chapter 5. Server configuration and management
USER
===============================
PAUL
If you still want to apply the automatic SYSDBA mapping as it was in Firebird 2.1, login as SYSDBA
and give the command:
This grants all Windows administrators automatic SYSDBA rights in every database (including the
security database, so they can manage user accounts), provided that they are authenticated by
the Win_Sspi plugin. To achieve this, they must connect
• making sure that the Engine12 provider doesn’t kick in. This is easily achieved with a
connection string like xnet://local-path-or-alias.
To give just one administrator — or indeed any user — full SYSDBA power, use this command:
The double quotes are necessary because of the backslash in the user name. (Specifying just
frank will be accepted by Firebird, but won’t result in a working mapping on most, if not all,
Windows systems.)
25
Chapter 5. Server configuration and management
E.g.:
The GLOBAL keyword is necessary if it concerns a global mapping and you’re not directly
connected to the security database where the mapping is registered.
The range of excellent GUI tools available for use with a Windows client machine is too numerous
to describe here. At least one of them, FlameRobin, is also available for Linux.
Explore the Download > Tools > Administration page at https://www.ibphoenix.com for all of the
options.
Remember: you can use a Windows client to access a Linux server and vice-versa.
26
Chapter 6. Working with databases
In as much as remote connections are involved, we will use the recommended TCP/IP protocol.
An explicit local connection string consists of the path + filename specification in the native format
of the filesystem used on the server machine, for example
/opt/firebird/examples/empbuild/employee.fdb
• on a Windows server:
C:\Biology\Data\Primates\Apes\populations.fdb
Many clients also allow relative path strings (e.g. “..\examples\empbuild\employee.fdb”) but you
should use these with caution, as it’s not always obvious how they will be expanded. Getting an
error message is annoying enough, but applying changes to another database than you thought you
were connected to may be disastrous.
Instead of a file path, the local connection string may also be a database alias that is defined in
databases.conf, as mentioned earlier. The format of the alias depends only on how it’s defined in
the configuration file, not on the server filesystem. Examples are:
• zappa
• blackjack.fdb
• poker
Upon receiving a local connection string, the Firebird client will first attempt to make a direct,
embedded connection to the database file, bypassing authentication but respecting the SQL
27
Chapter 6. Working with databases
privileges and restrictions of the supplied user and/or role name. That is, if the Engine12 provider is
enabled in firebird.conf or databases.conf — which it is by default. If the database file exists, but
the connection fails because the client process doesn’t have the required access privileges to the
file, a client-server connection is attempted (by the Loopback provider), in this order:
2. On Windows: using WNET (a.k.a. NetBEUI or Named Pipes), on the local machine;
You can force Firebird to use a certain protocol (and skip the embedded connection attempt) by
prepending the protocol in URL style:
• wnet://doggybase (NetBEUI — named pipes — connection using an alias on the local Windows
machine)
If your XNET connections fail, it may be because the local protocol isn’t working
properly on your machine. If you’re running Windows Vista, 2003 or XP with
terminal services enabled, this can often be fixed by setting IpcName to
Global\FIREBIRD in the configuration file firebird.conf (don’t forget to uncomment
the parameter and restart the server).
If setting IpcName doesn’t help and you don’t get the local protocol enabled, you can
usually work around the problem by using inet://, wnet://, or putting “
localhost:” before your database paths or aliases, thus turning them into TCP/IP
connection strings (discussed below).
3. a colon (“:”)
28
Chapter 6. Working with databases
4. either the absolute path + filename on the server machine, or an alias defined on the server
machine.
Examples:
• On Linux/Unix:
pongo:/opt/firebird/examples/empbuild/employee.fdb
bongo/3052:fury
112.179.0.1:/var/Firebird/databases/butterflies.fdb
localhost:blackjack.fdb
• On Windows:
siamang:C:\Biology\Data\Primates\Apes\populations.fdb
sofa:D:\Misc\Friends\Rich\Lenders.fdb
inca/fb_db:D:\Traffic\Roads.fdb
127.0.0.1:Borrowers
Notice how the aliased connection strings don’t give any clue about the server OS. And they don’t
have to, either: you talk to a Linux Firebird server just like you talk to a Windows Firebird server.
In fact, specifying an explicit database path is one of the rare occasions where you have to be aware
of the difference.
5. either the absolute path + filename on the server machine, or an alias defined on the server
machine.
Examples:
\\siamang\C:\Biology\Data\Primates\Apes\populations.fdb
29
Chapter 6. Working with databases
\\sofa\D:\Misc\Friends\Rich\Lenders.fdb
\\inca@fb_db\D:\Traffic\Roads.fdb
\\127.0.0.1\Borrowers
1. a protocol name (inet or wnet) followed by a colon and two slashes (“://”)
4. a slash (“/”)
5. either the absolute path + filename on the server machine, or an alias defined on the server
machine.
Examples:
• On Linux/Unix:
inet://pongo//opt/firebird/examples/empbuild/employee.fdb
inet://bongo:3052/fury
inet://112.179.0.1//var/Firebird/databases/butterflies.fdb
inet://localhost/blackjack.fdb
• On Windows:
inet://siamang/C:\Biology\Data\Primates\Apes\populations.fdb
inet://sofa:4044/D:\Misc\Friends\Rich\Lenders.fdb
wnet://inca:fb_db/D:\Traffic\Roads.fdb
wnet://127.0.0.1/Borrowers
Since XNET is a purely local protocol, you can’t have remote connection strings starting with
xnet://.
30
Chapter 6. Working with databases
Please be aware that some third-party client programs may have different requirements for the
composition of connection strings. Refer to their documentation or online help to find out.
If you move or copy the sample database, be sure to place it on a hard disk that is physically
attached to your server machine. Shares, mapped drives or (on Unix) mounted SMB (Samba) file
systems will not work. The same rule applies to any databases that you create or use.
For simplicity here, we will look at authenticating as SYSDBA using the password masterkey. Also, to
keep the lines in the examples from running off the right edge, we will work with local databases
and use aliases wherever possible. Of course everything you’ll learn in these sections can also be
applied to remote databases, simply by supplying a full TCP/IP connection string.
Firebird ships with a text-mode client named isql (Interactive SQL utility). You can use it in several
ways to connect to a database. One of them, shown below, is to start it in interactive mode. Go to the
directory where the Firebird tools reside (see Default disk locations if necessary) and type isql
(Windows) or ./isql (Linux) at the command prompt.
C:\Programmas\Firebird\Firebird_3_0>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL>connect xnet://employee user sysdba password masterkey;
• In isql, every SQL statement must end with a semicolon. If you hit Enter and
the line doesn’t end with a semicolon, isql assumes that the statement
continues on the next line and the prompt will change from SQL> to CON>. This
enables you to split long statements over multiple lines. If you hit Enter after
your statement and you’ve forgotten the semicolon, just type it after the CON>
prompt on the next line and press Enter again.
• If the connection string doesn’t start with a host or protocol name, a direct
31
Chapter 6. Working with databases
You can optionally enclose the path, the user name and/or the password in single
(') or double (") quotes. If the path contains spaces, quoting is mandatory. Case-
sensitive user names (created like this: create user "Jantje" password …) and user
names with spaces, international characters or other "`funny stuff`" also need to
be double-quoted.
At this point, isql will inform you that you are connected:
You can now continue to play about with the employee database. With isql you can query data, get
information about the metadata, create database objects, run data definition scripts and much
more.
SQL>quit;
You can also type EXIT instead of QUIT, the difference being that EXIT will first commit any open
transactions, making your modifications permanent.
Some GUI client tools take charge of composing the CONNECT string for you, using server, path (or
alias), user name and password information that you type into prompting fields. Supply the various
elements as described in the preceding topic.
Notes
• It is also quite common for such tools to expect the entire server + path/alias as
• Remember that file names and commands on Linux and other Unix-like
platforms are case-sensitive.
32
Chapter 6. Working with databases
create a database interactively — although, for your serious database definition work, you should
create and maintain your metadata objects using data definition scripts.
To create a database interactively using the isql command shell, type isql (Windows) or ./isql
(Linux) at the command prompt in the directory where the Firebird tools are.
C:\Programmas\Firebird\Firebird_3_0>isql
Use CONNECT or CREATE DATABASE to specify a database
Now you can create your new database interactively. Let’s suppose that you want to create a
database named test.fdb and store it in a directory named data on your D drive:
The database will be created and, after a few moments, the SQL prompt will reappear. You are now
connected to the new database and can proceed to create some test objects in it.
But to verify that there really is a database there, let’s first type in this query:
Although you haven’t created any tables yet, the screen will fill up with a large amount of data! This
query selects all of the rows in the system table RDB$RELATIONS, where Firebird stores the metadata
for tables. An “empty” database is not really empty: it contains a number of system tables and other
objects. The system tables will grow as you add more user objects to your database.
To get back to the command prompt type QUIT or EXIT, as explained in the section on connecting.
33
Chapter 6. Working with databases
In Firebird 3, if you try to create a database other than in embedded mode as someone who is not a
Firebird admin (i.e. SYSDBA or an account with equal rights), you may be in for a surprise:
Non-admin users must explicitly be granted the right to create databases by a Firebird admin:
Notice that with a serverless connection, i.e. without specifying a host name or protocol before the
database name (and Engine12 enabled!), Firebird won’t deny any CREATE DATABASE statement. It will
only fail if the client process doesn’t have sufficient rights in the directory where the database is to
be created.
Firebird accords with the SQL standard by truncating the result (quotient) of an integer/integer
calculation to the next lower integer. This can have bizarre results unless you are aware of it.
1 / 3 = 0
If you are upgrading from an RDBMS which resolves integer/integer division to a float quotient, you
will need to alter any affected expressions to use a float or scaled numeric type for either dividend,
divisor, or both.
For example, the calculation above could be modified thus in order to produce a non-zero result:
1.000 / 3 = 0.333
34
Chapter 6. Working with databases
Strings in Firebird are delimited by a pair of single quote (apostrophe) symbols: 'I am a string'
(ASCII code 39, not 96). If you used earlier versions of Firebird’s relative, InterBase®, you might
recall that double and single quotes were interchangeable as string delimiters. Double quotes
cannot be used as string delimiters in Firebird SQL statements.
Apostrophes in strings
If you need to use an apostrophe inside a Firebird string, you can “escape” the apostrophe
character by preceding it with another apostrophe.
'Joe's Emporium'
because the parser encounters the apostrophe and interprets the string as 'Joe' followed by some
unknown keywords. To make it a legal string, double the apostrophe character:
'Joe''s Emporium'
Concatenation of strings
The concatenation symbol in SQL is two “pipe” symbols (ASCII 124, in a pair with no space
between). In SQL, the “+” symbol is an arithmetic operator and it will cause an error if you attempt
to use it for concatenating strings. The following expression prefixes a character column value with
the string “Reported by:”:
Firebird will raise an error if the result of a string concatenation exceeds the maximum (var)char
size of 32 Kb. If only the potential result — based on variable or field size — is too long you’ll get a
warning, but the operation will be completed successfully. (In pre-2.0 Firebird, this too would cause
an error and halt execution.)
See also the section below, Expressions involving NULL, about concatenating in expressions
involving NULL.
Double-quoted identifiers
Before the SQL-92 standard, it was not legal to have object names (identifiers) in a database that
duplicated keywords in the language, were case-sensitive or contained spaces. SQL-92 introduced a
single new standard to make any of them legal, provided that the identifiers are defined within
35
Chapter 6. Working with databases
pairs of double-quote symbols (ASCII 34) and were always referred to using double-quote
delimiters.
The purpose of this “gift” was to make it easier to migrate metadata from non-standard RDBMSes to
standards-compliant ones. The down-side is that, if you choose to define an identifier in double
quotes, its case-sensitivity and the enforced double-quoting will remain mandatory.
Firebird does permit a slight relaxation under a very limited set of conditions. If the identifier
which was defined in double-quotes:
...then it can be used in SQL unquoted and case-insensitively. (But as soon as you put double-quotes
around it, you must match the case again!)
Don’t get too smart with this! For instance, if you have tables “TESTTABLE” and
“TestTable”, both defined within double-quotes, and you issue the command:
Unless you have a compelling reason to define quoted identifiers, it is recommended that you avoid
them. Firebird happily accepts a mix of quoted and unquoted identifiers — so there is no problem
including that keyword which you inherited from a legacy database, if you need to.
Some database admin tools enforce double-quoting of all identifiers by default. Try
to choose a tool which makes double-quoting optional.
In SQL, NULL is not a value. It is a condition, or state, of a data item, in which its value is unknown.
Because it is unknown, NULL cannot behave like a value. When you try to perform arithmetic on
NULL, or involve it with values in other expressions, the result of the operation will almost always be
NULL. It is not zero or blank or an “empty string” and it does not behave like any of these values.
Below are some examples of the types of surprises you will get if you try to perform calculations
and comparisons with NULL.
• 1 + 2 + 3 + `NULL`
• not (NULL)
36
Chapter 6. Working with databases
You might have expected 6 from the first expression and “Home sweet” from the third, but as we just
said, NULL is not like the number 0 or an empty string — it’s far more destructive!
will return NULL if either FirstName or LastName is NULL. Otherwise it will nicely concatenate the two
names with a space in between — even if any one of the variables is an empty string.
Think of NULL as UNKNOWN and these strange results suddenly start to make sense! If
the value of Number is unknown, the outcome of ‘1 + 2 + 3 + Number’ is also
unknown (and therefore NULL). If the content of MyString is unknown, then so is
‘`MyString || YourString`’ (even if YourString is non-NULL). Etcetera.
Now let’s examine some PSQL (Procedural SQL) examples with if-constructs:
• Equals (‘=’)
if (a = b) then
MyVariable = 'Equal';
else
MyVariable = 'Not equal';
After executing this code, MyVariable will be 'Not equal' if both a and b are NULL. The reason is
that a = b yields NULL if at least one of them is NULL. If the test expression of an “if” statement is
NULL, it behaves like false: the ‘then’ block is skipped, and the ‘else’ block executed.
Although the expression may behave like false in this case, it’s still NULL. If you
try to invert it using not(), what you get is another NULL — not “true”.
if (a <> b) then
MyVariable = 'Not equal';
else
MyVariable = 'Equal';
Here, MyVariable will be 'Equal' if a is NULL and b isn’t, or vice versa. The explanation is
analogous to that of the previous example.
Firebird 2 and above implement a new use of the DISTINCT keyword allowing you to perform
(in)equality tests that take NULL into account. The semantics are as follows:
37
Chapter 6. Working with databases
• Two expressions are DISTINCT if they have different values or if one is NULL and the other isn’t;
• They are NOT DISTINCT if they have the same value or if they are both NULL.
Notice that if neither operand is NULL, DISTINCT works exactly like the “<>” operator, and NOT
DISTINCT like the “=” operator.
DISTINCT and NOT DISTINCT always return true or false, never NULL.
Using DISTINCT, you can rewrite the first PSQL example as follows:
These versions will give you the results that a normal (i.e. not SQL-brainwashed) human being
would expect, whether there are NULLs involved or not.
A lot more information about NULL behaviour can be found in the Firebird Null Guide, at these
locations:
https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/nullguide/firebird-null-
guide.html (HTML)
https://www.firebirdsql.org/file/documentation/pdf/en/firebirddocs/nullguide/firebird-null-
guide.pdf (PDF)
38
Chapter 7. Protecting your data
Regular backups and occasional restores should be a scheduled part of your database management
activity.
Except in nbackup’s lock mode, do not use external proprietary backup utilities or
file-copying tools such as WinZip, tar, copy, xcopy, etc., on a database which is
running. Not only will the backup be unreliable, but the disk-level blocking used
by these tools can corrupt a running database.
Study the warnings in the next section about database activity during restores!
More information about gbak can be found here (HTML and PDF version, same content):
https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/gbak/firebird-gbak.html
https://www.firebirdsql.org/file/documentation/pdf/en/firebirddocs/gbak/firebird-gbak.pdf
The nbackup manual is here (again same content in HTML and PDF):
https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/nbackup/firebird-
nbackup.html
https://www.firebirdsql.org/file/documentation/pdf/en/firebirddocs/nbackup/firebird-nbackup.pdf
Firebird is installed with forced writes (synchronous writes) enabled by default. Modifications are
written to disk immediately upon posting.
It is possible to configure a database to use asynchronous data writes — whereby modified or new
data are held in the memory cache for periodic flushing to disk by the operating system’s I/O
subsystem. The common term for this configuration is forced writes off (or disabled). It is sometimes
resorted to in order to improve performance during large batch operations.
39
Chapter 7. Protecting your data
The big warning here is: do not disable forced writes on a Windows server. It has been observed
that the Windows server platforms do not flush the write cache until the Firebird service is shut
down. Apart from power interruptions, there is just too much that can go wrong on a Windows
server. If it should hang, the I/O system goes out of reach and your users' work will be lost in the
process of rebooting.
Linux servers are safer for running an operation with forced writes disabled temporarily. Still, do
not leave it disabled once your large batch task is completed, unless you have a very robust fall-
back power system.
One of the restore options in the gbak utility (gbak -rep[lace_database]) allows you to restore a gbak
file over the top of an existing database. It is possible for this style of restore to proceed without
warning while users are logged in to the database. Database corruption is almost certain to be the
result.
Notice that the shortest form of this command is gbak -rep, not gbak -r as it used to
be in previous Firebird versions. What happened to gbak -r? It is now short for
gbak -recreate_database, which functions the same as gbak -c[reate] and throws
an error if the specified database already exists. You can force overwriting of the
existing database by adding the o[verwrite] flag though. This flag is only supported
with gbak -r, not with gbak -c.
These changes have been made because many users thought that the -r switch
meant restore instead of replace — and only found out otherwise when it was too
late.
Be aware that you will need to design your admin tools and procedures to prevent
any possibility for any user (including SYSDBA) to restore to your active database if
any users are logged in.
If is practicable to do so, it is recommended to restore to spare disk space using the gbak -c option
and test the restored database using isql or your preferred admin tool. If the restored database is
good, shut down the old database (you can use the gfix command-line tool for this; see Firebird
Database Housekeeping Utility (HTML) or Firebird Database Housekeeping Utility (PDF)). Make a
filesystem copy of the old database just in case and then copy the restored database file(s) over
their existing counterparts.
If you do not block access to users while performing a restore using gbak -rep then users may be
able to log in and attempt to do operations on data. Corrupted structures will result.
40
Chapter 8. How to get help
• Visit the official Firebird Project site at https://www.firebirdsql.org and join the user support
lists, in particular firebird-support`. Look at https://www.firebirdsql.org/en/mailing-lists/ for
instructions.
41
Chapter 9. How to give help
42
Chapter 10. The Firebird Project
The Firebird Project developers and testers use an email list forum — firebird-devel Google
Group — as their “virtual laboratory” for communicating with one another about their work on
enhancements, bug-fixing and producing new versions of Firebird.
Anyone who is interested in watching their progress can join this forum. However, user support
questions are a distraction which they do not welcome. Please do not try to post your user support
questions there! These belong in the firebird-support group.
Happy Firebirding!
43
Appendix A: Document History
Revision History
2.2 2 Dec PV • Removed "Using the books by IBPhoenix" as it doesn’t make sense in the
2005 QSG.
• Removed link to UFB and RefGuide; added a note instead explaining their
current status.
44
Appendix A: Document History
Revision History
3.0 21 May PV Creation of 2.0 Quick Start Guide, still equal to previous revision except for
2006 some version numbers, XML ids etc.
• Removed any and all remarks about Classic not having a (full) Service
Manager.
• The “Other things you need” section is now gone and its contents
distributed across other sections.
• Weakened the claim that Firebird is more SQL-compliant than any other
RDBMS.
45
Appendix A: Document History
Revision History
• In the “How to corrupt…” part, changed gbak -r syntax to -rep and added
explanatory note.
• Added the “IB6 plus rlsnotes” as last-resort option to How to get help. Also
mentioned firebird-support explicitly.
3.3 15 Oct PV • Default disk locations table: added isql to command line tools; added row
2006 for additional server-side libs.
46
Appendix A: Document History
Revision History
3.4 25 Jan PV • About this guide: Changed note about versions and replaced HTML and
2007 PDF links with single link to new doc index page.
• Default disk locations: Created two subsections (for Linux and Windows);
also split table in two and removed first column. Introduced placeholders
<ProgramDir> and <SystemDir>. Changed text around tables, changed
existing note, and added note for Win64 users.
• Security: Removed statement that 1.5 Release Notes are included with 2.x
packages.
• More about NULLs: Replaced note about the Null Guide being updated
with a para announcing the availability of the new version.
• How to get help: Updated documentation links and changed text here and
there.
3.5 14 Mar PV • About this guide and Important notice for 64-bit Windows users: Minor
2007 rewordings.
3.6 21 Sep PV • About this guide: Mentioned 2.0.3. Warned against 2.0.2.
2007
• Expressions involving NULL: Space added to expected concatenation
result: “Home sweet”.
3.7 8 Apr PV • About this guide: Added 2.0.4 and 2.1 to covered versions. Mentioned
2008 forced writes bug.
• Installing the Firebird server :: Use the Guardian?: Added warning about
Win installer not detecting existing server.
47
Appendix A: Document History
Revision History
3.8 18 Jan PV • About this guide: Added 2.0.5 and 2.1.2 to covered versions.
2009
• Preventing data loss :: Backup: Mentioned nbackup’s brokenness in 2.1.
3.9 4 Sep PV • About this guide: Added 2.0.6 and 2.1.3 to covered versions.
2010
• Working with databases :: Creating a database using isql :: Starting isql:
Added “ means Enter” note, like in Connecting with isql.
• How to get help: Last list item: changed version ref. 2.0 to 2.x.
4.0 5 Sep PV Creation of 2.5 Quick Start Guide, still equal to previous revision except for
2010 some version numbers, XML ids etc. Also removed erroneous id from primary
index term in Document History title.
4.2 21 Sep PV • Classic, SuperClassic or Superserver: Moved the table into an appendix
2010 and left only a concise overview here so first-time users can make a
reasonable choice. Moved the paragraph about installation packages into
a separate subsection.
4.3 8 Jul 2011 PV • General: Added IDs to all sections that lacked one.
48
Appendix A: Document History
Revision History
• Default disk locations :: Linux: Added that default install dir may vary per
distribution.
• How to get help: Updated ulink to mailing lists page (text and url).
Updated ulink to Firebird Doc Index (text and url). Updated link to
Firebird Book and added notice about first edition being out of print.
Removed Note about Using Firebird and Firebird Reference Guide.
• The Firebird Project: Added terminating slash to ulink (text and url).
49
Appendix A: Document History
Revision History
4.4 26 Sep PV • articleinfo, About this guide: Added 2.5.1 to covered versions.
2011
• Classic, SuperClassic or Superserver?: Fixed typo in first para: Firebid →
Firebird.
5.0 11 Apr PV Top-level sections up to and including Working with databases extensively
2016 reworked to bring them up to date with Firebird 3. Some sections have been
moved or completely removed. Mild reworking in other sections.
5.1 14 Apr PV • Installing Firebird :: Installing the Firebird server :: Installing on Windows:
2016 corrected erroneous figure dash.
5.3 8 May PV Working with databases :: Connection strings :: Local connection strings:
2016 aliases.conf → databases.conf; aliases file → configuration file.
50
Appendix A: Document History
Revision History
5.6 8 Nov M Remove mention that ServerMode is per-database configurable (it’s not)
2023 R
51
Appendix B: License notice
Copyright © 2002-2004. All Rights Reserved. Initial Writer contact: hborrie at ibphoenix dot com.
Portions created by Paul Vinkenoog are Copyright © 2004-2016. All Rights Reserved. Contributor
contact: paul at vinkenoog dot nl.
Portions created by Mark Rotteveel are Copyright © 2020-2024. All Rights Reserved. (Contributor
contact(s): mrotteveel at users dot sourceforge dot net).
52
Alphabetical index
Alphabetical index
A F
Admin tools, 26 Firebird Book, 41
Administrators, 19, 25 Firebird Foundation, 42
Aliases, 22, 27, 29 Firebird Guardian, 8
Apostrophes in strings, 35 Firebird licenses, 4
Authentication, 23 Firebird project, 43
Firebird SQL, 34
B Forced writes, 39
Backup, 39
Books G
The Firebird Book, 41 gsec, 17
Guardian, 8
C
Checking the server, 9 H
Configuration, 17 Help, 41, 42
Connecting, 31
CONNECT statement, 31 I
connection strings, 27 IDPL, 4
CREATE DATABASE statement, 33 Installation, 5
client-only, 12
D drives, 6
Databases script or program, 6
aliases, 22, 27, 29 server, 5
backup and restore, 39, 40, 40 Installation kits, 5
connecting, 31 Integer division, 34
with a GUI client, 32 IPL, 4
with isql, 31 isql
corruption, 39 connecting to a database, 31
creating with isql, 32 creating a database, 32
example database, 31
metadata, 33 L
security, 21 License notice, 52
system tables, 33 Licenses, 4
working with databases, 27
Disk locations, 14 M
Linux, 14 Management, 17
Windows, 14
N
Document history, 44
Documentation, 41 NetBEUI, 29
Double-quoted identifiers, 35 NULL, 36
E P
53
Alphabetical index
Project, 43
R
RDB$ADMIN role
in regular databases, 20
in the security database, 19
Restore, 39
to a running database, 40
user logins during restore, 40
S
Sample database, 31
Security, 21
Security database, 19
Server mode
Classic, 6
MultiProcess, 6
SuperClassic, 6
ThreadedDedicated, 6
ThreadedShared, 6
Server name and path, 28, 29, 30
ServerMode
SuperServer, 6
Services (Windows), 10
SQL, 34
CONNECT statement, 31
CREATE DATABASE statement, 33
Strings, 35
apostrophes in strings, 35
concatenation, 35
delimiter symbol, 35
Support Firebird, 42
SYSDBA, 17, 21, 21
System tables, 33
T
TCP/IP, 28
Testing, 8
top command (Linux), 10
U
URL-style connection strings, 28, 30
User accounts, 18
54