Instalacja
Dodanie linijki z repo do etc/apt/sources.list
deb http://apt.postgresql.org/pub/repos/apt/ WERSJA_SYSTEMU-pgdg main
Import i dodanie klucza do etc/apt/trusted.gpg. Można też zerknąć na stronę PostgreSQL i sprawdzić aktualność poniższego wpisu.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \ sudo apt-key add - sudo apt-get update
Kto ciekaw, może również rzucić okiem na listę zaufanych kluczy w systemie i sprawdzić czy pojawił się nowy.
apt-key list
Ewentualne sprawdzenie listy dostępnych pakietów dla postgresql oraz instalacja wybranego.
aptitude search postgresql aptitude install postgresql-10
Podstawowa wiedza
PostgreSQL działa w systemie jako proces pochodny init, na podstawie skryptu startowego /etc/init.d/postgresql, domyślnie będzie się uruchamiał wraz ze startem systemu. Serwer nasłuchuje/komunikuje się na porcie 5432.
netstat -a | grep postgres
Podstawowe sterowanie serwerem ( start, stop, restart, status itp. ) uzyskuje się przez wydanie poleceń:
service postgresql
lub
/etc/init.d/postgresql
Po zatwierdzeniu zostaną zasugerowane opcje użycia, trzeba po prostu którąś dopisać po spacji do powyższego.
Z serwerami baz danych ściśle łączy się pojęcie klastra, czyli miejsca składowania danych/baz danych. Jeden klaster może zawierać wiele baz danych, a w ramach jednego serwera może istnieć wiele klastrów. W ramach natomiast jednego komputera, czy klastra komputerów, może pracować wiele serwerów baz danych replikujących między sobą dane, z mnóstwem klastrów i jeszcze większym mnóstwem baz, zawierających cały ogrom danych. No może nieco się zapędziłem 🙂 . W każdym razie nowo zainstalowany PostgreSQL będzie miał zainicjowany jeden główny klaster, którego umiejscowienie można sprawdzić z konsoli za pomocą polecenia:
pg_lsclusters
Gdyby nie chcieć tego domyślnego klastra, aby założyć swój własny, np. żeby określić dla niego inne położenie i… co tam jeszcze, zarządzać wieloma klastrami. W sumie to zagadnienie nie jest na ten post, który ma być prostą instrukcją do rozpoczęcia pracy z PostgreSQL. Nie mniej bardzo fajnie temat kontroli powstania tego domyślnego klastra m. in. na Debianie został wyjaśniony tutaj.
W okolicy domyślnego położenia PostgreSQL w systemie oraz jego głównego klastra ( /var/lib/postgresql/…/main ), znajdują się też dwa mogące przydać się pliki, z historią wydanych poleceń i zapytań – .bash_history i .psql_history. Domyślnie w .psql_history przechowywanych jest 500 ostatnich zapytań. Można podejrzeć i zmienić wartość z poziomu klienta serwera psql.
\echo :HISTSIZE \set HISTSIZE 600
Podstawowa konfiguracja serwera
Pliki konfiguracyjne PostgreSQL znajdują się w /etc/postgresql/…/main
- postgresql.conf – główny plik konfiguracyjny PostgreSQL. Ustawia się tu m. in. strefę czasową, style daty, port nasłuchu, limity połączeń i sporo więcej. Istotne dla początkującego może być, że serwer domyślnie akceptuje tylko połączenia lokalne. Jeżeli chcesz to zmienić, by móc łączyć się z sieci, to trzeba w tym pliku odszukać, odkomentować i zmodyfikować linijkę listen_addresses = ‘localhost’ na listen_addresses = ‘*’.
- pg_hba.conf – zawiera konfigurację uwierzytelniania hostów. Jeżeli ma to być serwer na lokalnym komputerze dla siebie, to można wpisać jak poniżej – po lokalu będzie wpuszczać wszystkich użytkowników bez hasła. Jeżeli chcesz żeby było z hasłem, to zmień metodę autoryzacji z trust na md5. Ostatnia linijka, to przykładowa autoryzacja z sieci, dla określonego użytkownika i bazy. Może to być konkretny adres IP lub adres sieci.
# TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 127.0.0.1/32 trust host adam_db adam 222.22.22.0/24 md5
- pg_ident.conf – zawiera konfigurację uwierzytelniania użytkowników. Pozwala mapować użytkowników systemowych na bazodanowych.
- start.conf – zawiera konfigurację trybu uruchamiania (auto/manual/disabled)
Wraz z instalacją PostgreSQL pojawia się nowy użytkownik systemowy – postgres, który jest administratorem dla serwera, mającym dostęp do jego systemowych zasobów. Można go sobie podejrzeć:
cat /etc/passwd
Oprócz tego, wewnątrz serwera, administratorem również jest użytkownik postgres, a jego domyślnie założona baza to… postgres – sporo tych postgresów na początek. Warto więc sobie od razu rozróżnić, tego systemowego użytkownika postgres, od tego na serwerze, o tej samej nazwie.
Przejście na systemowego użytkownika postgres.
sudo su postgres
lub
su su postgres
Następnie można uruchomić klienta łączącego się z PostgreSQL.
psql