Beekeeper Studio — wieloplatformowy edytor SQL bez rejestracji
Beekeeper Studio to desktopowy klient SQL na Linuksa, macOS i Windows, którego rdzeń jest otwarty na GPLv3. Pokazujemy konfigurację połączenia z bazą w Laravel Sail, tunel SSH przez bastion z odczytem ~/.ssh/config, query magics formatujące wyniki zapytania i podział na edycję darmową a płatną — łącznie z tym, których baz w wersji Community nie podłączysz.
Beekeeper Studio to desktopowy klient SQL na Linuksa, macOS i Windows, obsługujący ponad dwadzieścia pięć silników baz danych. Repozytorium beekeeper-studio/beekeeper-studio ma 23,4 tysiąca gwiazdek i 1607 forków, powstało w lipcu 2019 roku, a wydanie 6.0.1 wyszło 14 sierpnia 2026 — trzy dni po dużym 6.0.0. Ostatni commit na master pochodzi z 15 sierpnia 2026, więc projekt jest w codziennym rozwoju.
Piszemy o nim, bo w agencji pracującej na Laravelu klient SQL jest narzędziem, którego używa się kilkanaście razy dziennie i którego wybór zwykle nikt świadomie nie podejmuje. Ktoś kiedyś zainstalował phpMyAdmina, ktoś inny płaci za TablePlusa z własnej kieszeni, trzecia osoba odpala sail psql i przewija wyniki w terminalu. Beekeeper Studio jest w tym zestawieniu propozycją konkretną: rdzeń aplikacji na GPLv3, dane połączeń zostają na dysku, a wersja darmowa nie ma limitu połączeń ani zakładek.
Jest też druga strona tego modelu i opisujemy ją w sekcji o licencji, bo dla firmy powyżej dziesięciu osób ma znaczenie finansowe.
Czym to jest i gdzie się plasuje
Rynek desktopowych klientów SQL wygląda mniej więcej tak:
- DBeaver — Java, Apache 2.0 w wersji Community, obsługuje wszystko przez JDBC, ale interfejs jest gęsty i wolny przy starcie,
- DataGrip — subskrypcja JetBrains, kod zamknięty, za to najlepszy autouzupełniacz SQL na rynku,
- TablePlus — natywny i szybki, licencja płatna, kod zamknięty, wersja darmowa ogranicza liczbę otwartych zakładek,
- phpMyAdmin i Adminer — działają w przeglądarce, więc wymagają wystawienia panelu obok bazy, co na produkcji jest osobnym problemem bezpieczeństwa,
- psql i mysql — zawsze pod ręką, bez przeglądania danych w siatce i bez edycji rekordu kliknięciem.
Beekeeper Studio wchodzi między TablePlusa a DBeavera. Aplikacja jest napisana w Electronie, więc nie jest tak lekka jak narzędzie natywne, ale interfejs trzyma się jednego pomysłu: zakładki, siatka wyników, edytor SQL z podpowiedziami i podświetlaniem, motyw ciemny domyślnie. Nie ma kreatorów, nie ma perspektyw ETL, nie ma modelowania. Do codziennej pracy z bazą aplikacji webowej to zwykle wystarcza.
Instalacja
Na Debianie i Ubuntu od 22.04 wzwyż producent utrzymuje własne repozytorium APT:
curl -fsSL https://deb.beekeeperstudio.io/beekeeper.key \
| sudo gpg --dearmor --output /usr/share/keyrings/beekeeper.gpg \
&& sudo chmod go+r /usr/share/keyrings/beekeeper.gpg \
&& echo "deb [signed-by=/usr/share/keyrings/beekeeper.gpg] https://deb.beekeeperstudio.io stable main" \
| sudo tee /etc/apt/sources.list.d/beekeeper-studio-app.list > /dev/null
sudo apt update && sudo apt install beekeeper-studio -yNa Fedorze i RHEL-u repozytorium RPM:
sudo curl -o /etc/yum.repos.d/beekeeper-studio.repo https://rpm.beekeeperstudio.io/beekeeper-studio.repo
sudo rpm --import https://rpm.beekeeperstudio.io/beekeeper.key
sudo dnf install beekeeper-studioSą też Snap, Flatpak i AppImage, ale każdy z nich niesie ograniczenie sandboksa, o którym trzeba wiedzieć zawczasu:
- Snap nie widzi domyślnie kluczy SSH. Bez
sudo snap connect beekeeper-studio:ssh-keys :ssh-keystunel SSH nie zadziała, a komunikat o błędzie nie powie wprost, o co chodzi. - Flatpak nie ma dostępu do plików poza sandboksem, więc bazy SQLite z katalogu projektu otworzysz dopiero po
sudo flatpak override io.beekeeperstudio.Studio --filesystem=host. - AppImage na Ubuntu wymaga doinstalowania
libfuse2.
Na macOS i Windows instalator pobiera się ze strony projektu, w wariancie dla Apple Silicon i Intela. Wersję Community da się też zbudować samodzielnie ze źródeł — README wymaga Node.js w wersji 20 lub nowszej, Yarna w trybie classic i sprowadza się do:
git clone git@github.com:beekeeper-studio/beekeeper-studio.git
cd beekeeper-studio/
yarn set version classic
yarn install
yarn run electron:serveTa możliwość nie jest ciekawostką dla hobbystów. GPLv3 na rdzeniu aplikacji oznacza, że jeśli producent zniknie albo zmieni model licencyjny, kod wersji Community zostaje i można go dalej budować.
Połączenie z bazą w Laravel Sail
Najczęstsza pomyłka przy pierwszym połączeniu z bazą projektu w Sailu bierze się z tego, że wartości z .env opisują widok z wnętrza kontenera, a Beekeeper Studio łączy się z hosta. To dwa różne adresy i dwa różne porty.
W naszym repozytorium compose.yaml mapuje Postgresa tak:
pgsql:
image: 'postgres:18-alpine'
ports:
- '${FORWARD_DB_PORT:-15432}:5432'Aplikacja w kontenerze widzi bazę jako pgsql:5432, a przeglądarka i klient SQL na laptopie — jako 127.0.0.1:15432. W formularzu połączenia wpisujesz więc:
- Host:
127.0.0.1, niepgsql, - Port: wartość
FORWARD_DB_PORTz.env, domyślnie15432, - User, Password, Database:
DB_USERNAME,DB_PASSWORDiDB_DATABASEz.env.
Przy MySQL-u mapowanie w Sailu domyślnie prowadzi na port 3306 hosta, co koliduje z lokalną instalacją MySQL-a, jeśli ktoś ją ma. Stąd w tym projekcie nietypowy 15432 zamiast 5432 — port hosta wybieramy tak, żeby nie wchodził w drogę niczemu, co już działa.
Beekeeper obsługuje dwa tryby połączenia. TCP przez host i port daje dostęp do SSL i tunelu SSH. Połączenie przez gniazdo uniksowe działa tylko dla bazy na tej samej maszynie i nie ma opcji zaawansowanych, więc dla kontenerów odpada.
Bazy SQLite otwiera się plikiem. Po skojarzeniu rozszerzenia wystarczy kliknąć database/database.sqlite w menedżerze plików, co przy testach z DB_CONNECTION=sqlite bywa wygodniejsze niż cokolwiek innego.
Tunel SSH do produkcji
Tu Beekeeper Studio wypada lepiej, niż zapowiada opis na stronie, i to jest główny powód, dla którego warto go rozważyć w zespole utrzymującym serwery klientów.
Baza produkcyjna nie powinna nasłuchiwać na publicznym interfejsie. Standardowa ścieżka prowadzi więc przez SSH do serwera aplikacyjnego albo do bastionu, a stamtąd do bazy. Beekeeper robi to bez ręcznego zestawiania tunelu w drugim oknie terminala.
Metody uwierzytelnienia
Tryb automatyczny próbuje po kolei:
- kluczy z agenta SSH,
- wpisów
IdentityFilez~/.ssh/config, - kluczy domyślnych:
~/.ssh/id_ed25519,~/.ssh/id_ecdsa,~/.ssh/id_rsa,~/.ssh/id_dsa.
Jeśli klucze trzymasz w agencie — a przy kluczach z hasłem to sensowna praktyka — nie musisz w kliencie SQL konfigurować niczego poza nazwą hosta. Alternatywnie wskazujesz konkretny plik klucza wraz z hasłem do niego albo podajesz login i hasło SSH, co przy dostępie do cudzej infrastruktury bywa jedyną dostępną opcją.
Odczyt ~/.ssh/config
Beekeeper czyta konfigurację SSH i rozwiązuje aliasy hostów, pobierając z niej HostName, Port, User oraz IdentityFile i IdentitiesOnly. Obsługuje bloki Match (w tym all, host, user, localuser, exec) i dyrektywy Include z globami. Jeśli masz plik w rodzaju:
Host klient-prod
HostName 10.20.0.14
User deploy
Port 2222
IdentityFile ~/.ssh/klient_ed25519to w polu hosta SSH wpisujesz klient-prod i reszta uzupełnia się sama. Przy kilkunastu serwerach klientów oszczędza to więcej czasu niż jakakolwiek funkcja w edytorze zapytań.
Bastion i keepalive
Osobne pole Bastion Host (JumpHost) obsługuje wejście przez serwer pośredniczący, z tym samym zestawem trzech metod uwierzytelnienia co host docelowy. Pole Keepalive Interval ustawia częstotliwość pingów podtrzymujących połączenie; zero wyłącza mechanizm. Warto je ustawić, bo domyślne ClientAliveInterval na serwerze potrafi zrywać bezczynny tunel w środku analizy danych.
Jedno ograniczenie trzeba znać zawczasu: Beekeeper nie obsługuje dyrektywyProxyJumpz~/.ssh/config. Jeśli Twoja konfiguracja opiera się naProxyJump bastion, klient tego nie odczyta i bastion trzeba wskazać ręcznie w formularzu połączenia.
SSL i TLS
Poza tunelem dostępne są trzy warianty połączenia szyfrowanego, które producent mapuje na znane z Postgresa wartości sslmode:
- Trust the server — SSL bez własnych certyfikatów,
- Required Cert — SSL z certyfikatami, z wyłączonym
rejectUnauthorized, - Verified Cert — SSL z certyfikatami i włączonym
rejectUnauthorized, czyli pełna weryfikacja.
Przy bazach zarządzanych w chmurze, gdzie dostawca wymusza szyfrowanie, wybór między drugim a trzecim wariantem decyduje o tym, czy weryfikujesz tożsamość serwera, czy tylko szyfrujesz ruch. Do produkcji bierz Verified Cert.
Gdzie lądują hasła
Pytanie, które przy narzędziu z kontem w chmurze zadaje się jako pierwsze. Dane połączeń Beekeeper trzyma lokalnie i nie wysyła ich na serwery producenta. Katalog aplikacji zależy od systemu:
- Linux —
~/.config/beekeeper-studio/, - macOS —
~/Library/Application Support/beekeeper-studio/, - Windows —
%APPDATA%\beekeeper-studio\.
Zapisanie hasła jest opcją przy nazywaniu połączenia, nie zachowaniem domyślnym. Przy korzystaniu z płatnych przestrzeni zespołowych producent deklaruje, że wrażliwe pola są szyfrowane po stronie aplikacji przed zapisem w chmurze; dokumentacja nie podaje jednak użytego algorytmu ani sposobu zarządzania kluczem, więc przy danych klienta objętych umową powierzenia warto to potraktować jako pytanie do producenta, a nie fakt do założenia.
Telemetria jest opcjonalna i wyłączona domyślnie, a zapytania idą z Twojej maszyny prosto do bazy. Aplikacja działa w całości offline, licencję płatną również da się zweryfikować bez internetu — plany Business obejmują licencje offline dla środowisk odciętych od sieci, przy czym pobrany plik jest ważny tylko przez okres subskrypcji i po odnowieniu trzeba go pobrać ponownie.
Codzienna praca
Zestaw funkcji, których używa się przy aplikacji webowej, jest kompletny: edytor SQL z autouzupełnianiem i podświetlaniem, zakładki, historia zapytań, zapisane zapytania, sortowanie i filtrowanie wyników, edycja danych wprost w siatce, modyfikacja struktury tabel, diagramy ERD, boczny panel do oglądania kolumn JSON, import i eksport danych oraz formatter SQL.
Dwie rzeczy zasługują na osobny akapit.
Tryb prywatności ukrywa zapisane połączenia i historię. Przy prezentacji dla klienta albo nagrywaniu materiału szkoleniowego rozwiązuje to problem, który zwykle rozwiązuje się gorączkowym zamykaniem zakładek na sekundę przed udostępnieniem ekranu.
Panel JSON ma znaczenie w projektach laravelowych, w których kolumny json i jsonb pojawiają się przy ustawieniach, metadanych i zrzutach payloadów. W większości klientów SQL taka kolumna to jedna długa linia tekstu w komórce.
Query magics
Funkcja, której nie ma w innych klientach i która po dwóch dniach staje się odruchem. Dopisujesz przyrostek do aliasu kolumny, a Beekeeper zmienia sposób renderowania wyniku w siatce. Składnia:
columnname__format__magictype[__options]Dostępne warianty to między innymi __format__link (klikalny adres), __format__email, __format__check (jedynka jako ptaszek, zero jako krzyżyk), __format__image[__width[__height]] (miniatura zamiast adresu), __format__money[__currencyCode], __format__progress[__max], __format__stars[__max], __format__unixtime[__scale][__utc][__iso], __format__enum__nazwa do podmiany wartości na etykiety oraz __goto[__schema]__table[__column] tworzące odnośnik do rekordu w innej tabeli.
W praktyce, przy typowej tabeli użytkowników:
select
id,
email as email__format__email,
avatar_url as avatar__format__image__48__48,
is_active as aktywny__format__check,
profile_url as profil__format__link
from users
order by created_at desc
limit 50;Zamiast pięćdziesięciu wierszy adresów i zer z jedynkami dostajesz siatkę z miniaturami awatarów i ptaszkami. Przy debugowaniu zgłoszenia typu „użytkownik widzi nie swój obrazek” to różnica między przeglądaniem danych a ich czytaniem.
Magics są częścią zapytania, więc jadą razem z nim do zapisanych zapytań i do wiadomości wysłanej koledze. Ceną jest to, że zapytanie przestaje być przenośne — wklejone do psql zwróci kolumnę o dziwnej nazwie, ale wykona się poprawnie, bo dla bazy to zwykły alias.
Wtyczki i AI Shell
Wersja 6 ma system wtyczek dostępny dla wszystkich użytkowników, również w edycji Community, choć poszczególne wtyczki mogą mieć własne wymagania licencyjne. Instaluje się je z menu Tools > Manage Plugins, a aplikacja sprawdza aktualizacje przy starcie. Wtyczkę da się też wgrać ręcznie, rozpakowując ZIP z wydania na GitHubie do katalogu wtyczek.
Oficjalna wtyczka AI Shell pozwala pytać o dane językiem naturalnym i wymaga subskrypcji. Producent udokumentował API wtyczek, więc własne rozszerzenie jest wykonalne; ekosystem zewnętrznych wtyczek na razie praktycznie nie istnieje, bo mechanizm jest świeży.
Wydanie 6.0.0 z 11 sierpnia 2026 dołożyło współdzielenie zapytań, połączeń i folderów, a poprawka 6.0.1 z 14 sierpnia — kontekstowe menu i naprawę parsowania kluczy SSH.
Licencja i podział na edycje
Tę sekcję czyta się przed decyzją o wdrożeniu w zespole, bo model jest mieszany i łatwo się na nim naciąć.
Rdzeń aplikacji jest na GPLv3. Kod w katalogu src-commercial podlega osobnemu plikowi LICENSE-COMMERCIAL.md, czyli jest źródłowo dostępny, ale nie otwarty. GitHub raportuje z tego powodu licencję jako NOASSERTION — automat nie potrafi zaklasyfikować repozytorium z dwiema licencjami. Producent deklaruje, że edycja Community składa się wyłącznie z kodu otwartego, a płatne moduły — przestrzenie zespołowe, backup i restore, AI Shell — są źródłowo dostępne w tym samym repozytorium. Znaki towarowe i logotypy nie są objęte licencją otwartą, więc fork wymaga zmiany nazwy i grafik.
Czego nie ma w wersji darmowej
Podział przebiega głównie po obsługiwanych silnikach baz danych. Edycja Community obsługuje PostgreSQL, MySQL, SQLite, SQL Server, Redshift, CockroachDB, MariaDB, TiDB, Google BigQuery, Redis i GreengageDB.
Wyłącznie w wersjach płatnych działają: Oracle, Cassandra, ScyllaDB, Firebird, LibSQL, ClickHouse, DuckDB, SQL Anywhere, MongoDB, Trino i Presto, SurrealDB oraz DynamoDB w wersji beta. Snowflake jest zapowiedziany.
Dla zespołu laravelowego to podział korzystny: Postgres, MySQL, MariaDB, SQLite i Redis mieszczą się w edycji darmowej, więc typowy projekt obsłużysz bez wydawania złotówki. Rachunek zmienia się w chwili, gdy klient przychodzi z ClickHouse do analityki albo z MongoDB w części usług.
Cennik
Trzy plany, rozliczane za użytkownika, w cenach rocznych i miesięcznych:
- Indie — 9 USD miesięcznie przy płatności rocznej, 18 USD przy miesięcznej. Jedno urządzenie, szeroka obsługa baz, import i eksport, panel JSON.
- Professional — 14 USD rocznie, 28 USD miesięcznie. Wiele urządzeń, wszystkie bazy, wszystkie funkcje, wsparcie mailowe.
- Business — 18 USD rocznie, 35 USD miesięcznie. Dodatkowo SSO do baz w chmurze, obsługa środowisk odciętych od sieci, priorytet w zgłoszeniach i płatność na fakturę.
Producent stosuje model „lifetime access”: wersje wydane w trakcie trwania subskrypcji zostają Twoje na zawsze. Po wygaśnięciu przestajesz dostawać nowe wydania, ale to, co pobrałeś, dalej działa. Jest też trzydziestodniowa gwarancja zwrotu.
Kto powinien zapłacić
Tu jest miejsce, w którym łatwo o nieporozumienie, więc rozdzielmy dwie rzeczy.
Producent pisze wprost, że edycja Community jest przeznaczona dla studentów, osób prywatnych, organizacji pozarządowych i małych firm poniżej dziesięciu pracowników lub z przychodem rocznym poniżej miliona dolarów, a większe organizacje prosi o wykupienie licencji. To prośba, nie warunek licencji: GPLv3 nie zna ograniczeń ze względu na wielkość firmy i nie da się ich dołożyć bez wyjścia poza tę licencję. Prawnie edycja Community wolno używać komercyjnie w firmie dowolnej wielkości.
Nasze stanowisko: jeśli narzędzie siedzi na pasku zadań programisty przez osiem godzin dziennie, dziewięć dolarów miesięcznie jest tańsze niż godzina jego pracy. Rozstrzyganie tego argumentami z licencji jest odwracaniem uwagi od pytania, czy zespół chce, żeby projekt istniał za dwa lata.
Do wyliczenia budżetu: pięcioosobowy zespół na planie Professional rozliczanym rocznie to 70 USD miesięcznie, czyli koszt porównywalny z jedną małą maszyną w chmurze.
Na co uważać
- Electron. Aplikacja zużywa kilkaset megabajtów pamięci i startuje wolniej od narzędzia natywnego. Przy TablePlusie różnicę widać.
- Ponad 1,1 tysiąca otwartych zgłoszeń. Licznik GitHuba obejmuje też pull requesty, ale liczba i tak jest duża jak na zespół, który sam opisuje się jako mały i niezależny. Zgłoszenie błędu w rzadziej używanym silniku może poczekać.
- Brak
ProxyJump. Opisany wyżej wyjątek w odczycie~/.ssh/config. Bastion konfiguruje się ręcznie. - Sandboks w Snapie i Flatpaku. Klucze SSH i pliki SQLite wymagają dodania uprawnień, inaczej dostajesz mało mówiący błąd połączenia.
- Autouzupełnianie słabsze niż w DataGripie. Przy zapytaniach na kilkanaście złączeń i podzapytania różnicę czuć od razu.
- Brak wersji przeglądarkowej. Beekeeper jest aplikacją desktopową; do bazy udostępnianej przez przeglądarkę potrzebujesz innego narzędzia.
- Znaki towarowe poza licencją otwartą. Fork jest dozwolony, ale pod inną nazwą i z innym logotypem.
Podsumowanie
Beekeeper Studio jest dobrym domyślnym klientem SQL dla zespołu pracującego na Postgresie i MySQL-u, zwłaszcza takiego, który wchodzi na serwery klientów przez SSH.
Co daje:
- obsługę ponad dwudziestu pięciu silników baz danych, z Postgresem, MySQL-em, MariaDB, SQLite, SQL Serverem i Redisem w wersji darmowej,
- tunel SSH z odczytem
~/.ssh/config, obsługą agenta, bastionu i keepalive, bez zestawiania tunelu ręcznie w drugim terminalu, - trzy warianty SSL odwzorowujące
sslmode, z pełną weryfikacją certyfikatu włącznie, - dane połączeń i hasła trzymane lokalnie, telemetrię wyłączoną domyślnie i pełną pracę offline,
- query magics formatujące wyniki wprost w aliasie kolumny — miniatury, ptaszki, kwoty, odnośniki do innych tabel,
- tryb prywatności do prezentacji i panel JSON przydatny przy kolumnach
jsonijsonb, - system wtyczek z udokumentowanym API, dostępny również w edycji darmowej,
- projekt w dobrej kondycji: 23,4 tysiąca gwiazdek, wydanie 6.0.1 z 14 sierpnia 2026, commity codziennie, siedem lat historii.
Licencja: rdzeń aplikacji na GPLv3, moduły płatne w katalogu src-commercial na licencji komercyjnej, źródłowo dostępne w tym samym repozytorium. Przy komercyjnym użyciu GPLv3 nie stanowi problemu, bo Beekeeper jest narzędziem, którego nie rozprowadzasz dalej ani nie linkujesz z własnym kodem — obowiązki GPL uruchamia dopiero dystrybucja zmodyfikowanej aplikacji, nie korzystanie z niej w firmie. Producent prosi organizacje powyżej dziesięciu osób lub z przychodem powyżej miliona dolarów o wykupienie licencji; sama licencja tego nie wymusza, więc to decyzja o wspieraniu projektu, a nie kwestia zgodności prawnej. Znaki towarowe i logotypy pozostają własnością producenta i nie są objęte licencją otwartą.