Firebird SQL
Overview
This guide covers the deployment and configuration of Firebird SQL on Linux, using SecureAnyCloud AMIs from the AWS Marketplace. Firebird is a relational database management system that offers ANSI SQL compliance, ACID transactions, and support for stored procedures, triggers and views. It is lightweight, needs minimal administration, and runs well on modest hardware.
What you get:
- Firebird SQL with a database listener on port 3050
- A dedicated installation volume at /opt/firebird
- SYSDBA credentials that are generated automatically and stored securely
- A systemd service for automatic startup on boot
- An OS package update script that keeps the system current
- AWS CLI v2 for AWS service integration
- Systems Manager Agent (SSM) for remote management
- CloudWatch Agent for monitoring
- The latest security patches, applied at build time
- 24/7 SecureAnyCloud support with a guaranteed 24-hour response SLA
Prerequisites
Before you launch this AMI, make sure you have:
- An active AWS account
- An active subscription to the Firebird SQL listing on AWS Marketplace
- An EC2 key pair for SSH access
- Familiarity with EC2 instance management and SSH
Recommended instance type: t3.small (2 vCPU, 2 GB RAM) or larger. The minimum requirements are 1 vCPU, 1 GB RAM and 20 GB of disk space.
Launch the AMI
- Open the AWS Marketplace and search for "Firebird SQL SecureAnyCloud".
- Click Continue to Subscribe, accept the terms, then click Continue to Configuration.
- Select your preferred Region and Software Version.
- Click Continue to Launch.
- Choose Launch through EC2 for full control over the instance configuration.
- Select your instance type (
t3.smallis recommended). - Configure storage with a minimum of 20 GB gp3.
- Configure your Security Group with the inbound rules below, listed as port, protocol, source and purpose:
Port 22, TCP, from your IP: SSH access.
Port 3050, TCP, from your IP: the Firebird SQL database listener for remote connectivity.
Important: Restrict port 3050 to trusted IP addresses or application servers only.
- Select your EC2 key pair and launch the instance.
Connect via SSH
When your instance is running and has passed both status checks (2/2), connect over SSH:
ssh -i your-key.pem ec2-user@<public-ip-address>To switch to the root user:
sudo su -Retrieve the SYSDBA credentials
The SYSDBA password is generated randomly and stored on the instance. Read it with:
cat /stage/scripts/firebird_sysdba_password.logNote this password. You need it to connect to the database.
Connect to Firebird SQL
To connect from the server command line, run isql as the root user:
isql -u sysdbaEnter the password from the firebird_sysdba_password.log file when prompted.
To connect remotely with a database client or GUI application, use these settings:
- Host: the public or private IP of your EC2 instance
- Port: 3050
- Username: SYSDBA
- Password: the value from
/stage/scripts/firebird_sysdba_password.log
Create a database
Create a new database in isql:
CREATE DATABASE '/opt/firebird/data/myapp.fdb' USER 'SYSDBA' PASSWORD 'your_password';Create a table:
CREATE TABLE customers ( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );Insert data:
INSERT INTO customers (id, name, email) VALUES (1, 'John Doe', 'john@example.com'); COMMIT;Query data:
SELECT * FROM customers;Server components
Firebird SQL is installed at /opt/firebird.
Note: The automatic OS package update script may update component versions on first boot.
Filesystem layout
The mount points, with their sizes and descriptions, are:
/ (38 GB): root filesystem.
/boot (2 GB): operating system kernel files.
/opt/firebird (9.8 GB): Firebird SQL installation directory.
The key directories are:
/opt/firebird: Firebird installation root.
/opt/firebird/bin: Firebird binaries (isql, gbak, gfix).
/opt/firebird/data: database files (.fdb).
/opt/firebird/security4.fdb: security database (user accounts).
Managing the Firebird service
Firebird is managed through systemd and starts automatically on boot.
Check service status:
systemctl status firebirdStop Firebird:
systemctl stop firebirdStart Firebird:
systemctl start firebirdRestart Firebird:
systemctl restart firebirdScripts and log files
These files are in /stage/scripts:
initial_boot_update.sh: updates the OS with the latest packages on first boot.
initial_boot_update.log: the output log for the boot update script.
firebird_sysdba_password.log: the Firebird SQL SYSDBA password.
On startup
An OS package update script runs on first boot to make sure the image is fully up to date. To disable it, remove the script and its crontab entry:
rm -f /stage/scripts/initial_boot_update.sh crontab -e
# Delete the following line, save and exit: @reboot /stage/scripts/initial_boot_update.shTroubleshooting
Cannot connect to Firebird on port 3050
- Verify that Firebird is running:
systemctl status firebird - Check that your security group allows port 3050 from your IP.
- Test local connectivity:
isql -u sysdba - Verify that the listener is active:
netstat -tlnp | grep 3050
Authentication fails
- Verify the SYSDBA password in
/stage/scripts/firebird_sysdba_password.log. - Make sure you use the correct case (SYSDBA is uppercase).
- Check that the security database exists:
ls /opt/firebird/security4.fdb
Database file not found
- Verify the full path to the .fdb file.
- Check the file permissions.
- Make sure the Firebird user has read and write access to the data directory.
Service fails to start
- Check the logs:
journalctl -u firebird --no-pager -n 50 - Verify disk space:
df -h /opt/firebird - Check for port conflicts:
netstat -tlnp | grep 3050
Security Recommendations
- Change the SYSDBA password after your first login, using
gsecor SQL commands. - Restrict port access: only allow port 3050 from trusted IPs.
- Create application-specific users: do not use SYSDBA for application connections.
- Secure the password file: delete
/stage/scripts/firebird_sysdba_password.logafter you note the value. - Back up databases regularly: use
gbakto create transportable backups. - Keep Firebird updated: apply security patches when they are available.
- Use encrypted connections: configure SSL/TLS for remote database connections.
Support
If you have any issues with this product, contact SecureAnyCloud support:
- Email: sales@secureanycloud.com
- Website: secureanycloud.com
- Support hours: 24/7 with a guaranteed 24-hour response SLA
Deploy on AWS
Launch Firebird SQL with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Deploy on AWS
Launch Firebird SQL with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
This image runs Firebird SQL, the mature, open-source, ANSI SQL relational database descended from InterBase. Firebird is the only workload on the image, so the platform stays lean, predictable and easy to reason about. The image provides the current stable Firebird 5.x line, installed from the official upstream distribution at firebirdsql.org and running as the SuperServer engine variant.
The image ships with native password authentication enabled. On the first boot of your instance, a one-shot service generates a fresh, strong password for the SYSDBA superuser, unique to that instance. The service applies the password to the security database and writes it to /root/firebird-credentials.txt, a file that only the root user can read. No shared or default SYSDBA password ships in the image.
Firebird database files (.fdb) live under /var/lib/firebird on a dedicated EBS storage volume, separate from the operating system disk. With the database files on their own volume, you can grow, snapshot and back up the storage independently of the root disk. The sample employee database that ships with Firebird is preinstalled, ready for hands-on exploration.
This is a headless image. Firebird has no built-in web interface. You administer it over SSH with the bundled isql interactive CLI shell, or from a desktop client such as FlameRobin or DBeaver through the Firebird wire protocol on TCP 3050.
Prerequisites
Before you deploy this image, you need:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Recommended instance type: m5.large (2 vCPU, 8 GB RAM) or larger. Firebird's footprint is small, but additional CPU and RAM directly benefit query concurrency and page cache size on production workloads.
Launch the instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for Firebird SQL. Select the SecureAnyCloud listing and choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet, and either create or select a security group that allows inbound port 22 from your management network. Leave the root volume at the default size or larger. The Firebird data volume is attached automatically from the image.
Select Launch instance. First-boot initialisation generates the SYSDBA password and starts Firebird. It takes a minute or so after the instance state becomes Running and the status checks pass.
Launch the instance from the AWS CLI
The command below launches an instance from the SecureAnyCloud Firebird SQL Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing, <key-name> with your EC2 key pair name, <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens inbound port 22.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--metadata-options HttpTokens=required \
--block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":30,"VolumeType":"gp3"}}]' \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=firebird-01}]'On success, the command prints a JSON document. Note the instance ID. Once the instance is running, retrieve its public address with aws ec2 describe-instances --instance-ids <instance-id> --query "Reservations[].Instances[].PublicIpAddress" --output text.
Connect over SSH
Connect over SSH with the key pair you selected and the public IP address from Step 2. The SSH login user depends on the operating system of the AMI variant you launched. For the Firebird SQL 5.0 AMI on Ubuntu 24.04, the login user is ubuntu.
ssh <login-user>@<public-ip>Wait until the instance has passed both EC2 status checks before you connect. The first-boot service runs before the SSH daemon is ready, so Firebird is initialised by the time you can log in.
Retrieve the generated SYSDBA password
The first-boot service generates a fresh SYSDBA superuser password for this instance and writes it, with the connection details, to /root/firebird-credentials.txt. Only the root user can read the file. Display it from your SSH session:
sudo cat /root/firebird-credentials.txtThe file looks like this, with a unique password on your instance:
# Firebird SQL 5.0 — Per-Instance Credentials
# Generated on first boot: Sat May 23 19:58:21 UTC 2026
#
# Open the isql shell with:
# /opt/firebird/bin/isql -user SYSDBA -password '<password below>' 'inet://127.0.0.1/employee'
# FIREBIRD_USER=SYSDBA FIREBIRD_SYSDBA_PASSWORD=<your generated password> FIREBIRD_HOST=127.0.0.1 FIREBIRD_PORT=3050 SAMPLE_DATABASE=inet://127.0.0.1/employeeFirst boot replaces the installer's transient SYSDBA password, so it no longer works. Use the generated password for every connection.
Confirm the service and the listener
Firebird runs under systemd as the firebird-superserver service and starts automatically on boot. Confirm that it is active:
systemctl is-active firebird-superserverThe command prints active. Next, confirm that the Firebird wire protocol is listening. By default the engine binds to the loopback address 127.0.0.1 on port 3050, so it is reachable from the instance itself:
ss -tln | grep 3050You should see a listening socket on 127.0.0.1:3050:
LISTEN 0 128 127.0.0.1:3050 0.0.0.0:*Connect with the isql interactive shell
The image provides /opt/firebird/bin/isql, the standard Firebird interactive SQL shell. Open an interactive session against the bundled employee sample database with the generated SYSDBA password. Replace <password> with the value from /root/firebird-credentials.txt:
/opt/firebird/bin/isql -user SYSDBA -password '<password>' 'inet://127.0.0.1/employee'You can also run a single statement without entering the interactive shell, by piping it to standard input. To verify the connection non-interactively from your SSH session, run:
echo "SELECT 'roundtrip-ok' FROM RDB\$DATABASE;" \
| /opt/firebird/bin/isql -user SYSDBA -password '<password>' 'inet://127.0.0.1/employee' -qThe query returns the literal value you asked for:
CONSTANT ============ roundtrip-okConfirm the engine version with the -z flag, which prints the client and server banner:
/opt/firebird/bin/isql -z -q < /dev/nullThe output names the Firebird release and the ODS (on-disk structure) version:
ISQL Version: LI-V5.0.3.1683 Firebird 5.0Explore the employee sample database
The employee database is the canonical Firebird sample. It models a small company with departments, projects, jobs and salary history. List its tables from inside isql:
SHOW TABLES;The shell prints the ten sample tables:
COUNTRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALESDescribe a single table with SHOW TABLE, and run a normal SQL query to read rows. The example below joins the EMPLOYEE table with its job code and returns the first five rows:
SELECT FIRST 5 FIRST_NAME, LAST_NAME, JOB_CODE FROM EMPLOYEE;FIRST_NAME LAST_NAME JOB_CODE =============== ==================== ======== Robert Nelson VP Bruce Young Eng Kim Lambert Eng Leslie Johnson Mktg Phil Forest MngrType EXIT; to leave the isql shell.
Create your own database
To create a new database, use the CREATE DATABASE statement in an isql session. The example below creates a database called inventory.fdb on the dedicated data volume, with the SYSDBA password as the database owner credential. Replace <password> with your generated SYSDBA password:
/opt/firebird/bin/isql -user SYSDBA -password '<password>'Inside the shell:
CREATE DATABASE 'inet://127.0.0.1//var/lib/firebird/inventory.fdb' USER 'SYSDBA' PASSWORD '<password>' PAGE_SIZE 16384 DEFAULT CHARACTER SET UTF8; CONNECT 'inet://127.0.0.1//var/lib/firebird/inventory.fdb' USER 'SYSDBA' PASSWORD '<password>'; CREATE TABLE products ( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(100) NOT NULL, price NUMERIC(10, 2) NOT NULL ); INSERT INTO products (id, name, price) VALUES (1, 'Mechanical Keyboard', 89.00); INSERT INTO products (id, name, price) VALUES (2, 'USB-C Hub', 39.00); COMMIT; SELECT * FROM products;Type EXIT; to leave the shell. The new .fdb file is stored under /var/lib/firebird and is included in any EBS snapshot of the data volume.
The Firebird data volume
Firebird database files are stored under /var/lib/firebird, which is a dedicated EBS volume separate from the operating system disk. Confirm the mount:
findmnt /var/lib/firebirdThe output shows that /var/lib/firebird is its own ext4 filesystem on a separate device:
TARGET SOURCE FSTYPE OPTIONS /var/lib/firebird /dev/nvme1n1 ext4 rw,relatimeBecause the data directory is on its own volume, you can take an Amazon EBS snapshot of it on its own schedule and grow it independently of the root volume. Check the available space at any time with:
df -h /var/lib/firebirdFilesystem Size Used Avail Use% Mounted on /dev/nvme1n1 20G 2.8M 19G 1% /var/lib/firebirdManage the Firebird service
Firebird is managed through systemd, and the service starts automatically on boot.
Check the service status:
systemctl status firebird-superserver --no-pagerStop, start and restart the service when needed:
sudo systemctl stop firebird-superserver
sudo systemctl start firebird-superserver
sudo systemctl restart firebird-superserverFirebird writes its log files under /opt/firebird. The main log is /opt/firebird/firebird.log. Review it first when you diagnose a startup or runtime problem:
sudo tail -f /opt/firebird/firebird.logThe engine's main configuration file is /opt/firebird/firebird.conf. The image sets RemoteBindAddress = 127.0.0.1, so Firebird listens only on the loopback interface by default.
To accept connections from outside the instance, comment out that line or set it to a specific address. Then open inbound TCP 3050 on the EC2 security group and restart the service. The database aliases that clients can connect to by name are defined in /opt/firebird/databases.conf.
Back up with gbak
gbak is the Firebird logical backup and restore tool. It takes a consistent, hot backup of a running database into a single .fbk archive that you can restore on any platform Firebird supports. Replace <password> with your generated SYSDBA password:
sudo /opt/firebird/bin/gbak -user SYSDBA -password '<password>' \
-backup -v \
'inet://127.0.0.1/employee' \
/var/lib/firebird/employee.fbkThe -v flag prints progress. To restore the archive to a new database file, run the inverse command:
sudo /opt/firebird/bin/gbak -user SYSDBA -password '<password>' \
-restore -v \
/var/lib/firebird/employee.fbk \
'inet://127.0.0.1//var/lib/firebird/employee-restored.fdb'The archive file is stored on the dedicated data volume, so it is included in any EBS snapshot you take of /var/lib/firebird. In production, schedule regular gbak runs with cron or a systemd timer, and copy the .fbk files to Amazon S3 for offsite retention.
For physical backups, nbackup takes incremental, block-level snapshots that complement gbak. See the upstream Firebird documentation at firebirdsql.org for the nbackup workflow.
Inspect database statistics with gstat
gstat reports header page information and detailed page-level statistics for a Firebird database file. Use it to understand the on-disk layout and to diagnose performance issues:
sudo /opt/firebird/bin/gstat -user SYSDBA -password '<password>' \
-h /var/lib/firebird/employee.fdbThe header dump reports the database page size, the ODS (on-disk structure) version, transaction counters and the platform Firebird was compiled for:
Database "/var/lib/firebird/employee.fdb" Database header page information: Flags 0 Generation 183 Page size 8192 ODS version 13.1 Implementation HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc Database dialect 3Manage users with gsec
gsec is the security database administration tool. It creates, modifies and deletes Firebird user accounts. The example below creates a read-only application user called appuser and grants it SELECT on the employee tables. From a root shell, run:
sudo /opt/firebird/bin/gsec -user SYSDBA -password '<password>' \
-add appuser -pw 'AppUserPass!' -fname 'Application' -lname 'User'Then grant table privileges from isql:
/opt/firebird/bin/isql -user SYSDBA -password '<password>' 'inet://127.0.0.1/employee'GRANT SELECT ON EMPLOYEE TO appuser; GRANT SELECT ON DEPARTMENT TO appuser; COMMIT; EXIT;The new account can now log in to the employee database from a client tool with the password you set. Rotate the SYSDBA password regularly through the same gsec interface with -modify SYSDBA -pw '<new>'.
Customise the firebird.conf settings
/opt/firebird/firebird.conf controls engine-wide settings. Common production changes include:
DefaultDbCachePages: the per-database page cache size, in pages. Increase it for read-heavy workloads.RemoteBindAddress: the network address the engine listens on. Set it to a private IP to accept remote client connections.WireCrypt: set it toRequiredto force every client connection to use Firebird's built-in wire encryption.
After editing the file, restart the service so the new values take effect:
sudo systemctl restart firebird-superserverSome changes require a reload of the security database, for example switching the authentication plugin. After such a change, restart the service and rerun a small isql command to confirm that the engine accepts the SYSDBA password under the new configuration.
Next steps
- Open inbound TCP 3050 on a private subnet security group so that application servers can reach Firebird directly.
- Install a desktop client such as FlameRobin or DBeaver, and connect with the
SYSDBAcredentials over an SSH tunnel from your workstation. - Schedule
gbakruns from cron or a systemd timer, and ship the resulting.fbkfiles to Amazon S3 for offsite retention. - Add the EBS data volume to your overall snapshot policy, so that the Firebird
.fdbfiles are backed up to Amazon EBS alongside your application data. - For high availability, set up Firebird's built-in replication (introduced in Firebird 4) between two instances. The user guide on firebirdsql.org covers the configuration in detail.
Deploy on AWS
Launch Firebird SQL on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com