Spis treści

Postgres - instalacja

Zaczęłam czytać: Anthony De Barros “Practical SQL: A Beginner Guide to Storytelling with Data”. Wszystkie zawarte w książce przykłady dotyczą systemu Postgresql. Uznałam więc, że czas zainstalować postgresa.

Chcę przyjrzeć się bliżej samemu postgresowi, a w trakcie czytania trochę się pobawić danymi. Muszę też koniecznie przypomnieć sobie SQL-a. To plan na październik.

Instalacja

Kroki potrzebne do instalacji w zasadzie ograniczają się do zainstalowania dwóch pakietów; polecenia systemctl to sprawdzienie statusu serwera (który jest uruchamiany razem z kilkoma procesami pomocniczymi):

1
2
3
4
5
sudo apt install postgresql postgresql-client

systemctl status postgresql
systemctl status postgresql@13-main.service
systemctl is-enabled postgresql

Administracja

Administracja bazami danych (tworzenie, usuwanie, tworzenie użytkowników, nadawanie uprawnień) odbywa się po zalogowaniu jako użytkownik uprzywilejowany postgres:

1
sudo su - postgres

Do interakcji z systemem bazy danych używam klienta psql, który może być używany w trybie pojedyńczego polecnia, np:

Zmiana hasła usera postgres

Teraz mogę na przykład zmienić hasło użytkownika postgres psql -c "alter user postgres with password 'Che7Thi!'"

Uzyskanie informacji o bieżącym połączeniu:

psql -c "\conninfo"

Mogę też używać psql jako interaktywnego klienta; po uruchomieniu “powłoki” psql mam dostęp

  • zarówno do “wewnętrznych” poleceń (z przedrostkiem “"), np.: psql -c "\?"
  • jak i do zwykłych poleceń sql, np: psql -c "\help create"

Utworzenie nowej bazy

Po uruchommieniu psql tworzę bazę analysis i użytkownika analysisuser z hasłem, które będzie zaszyfrowane:

CREATE DATABASE analysis; CREATE USER analysisuser WITH ENCRYPTED PASSWORD 'hae0Eis]';

… oraz nadaję temu użytkownikowi wszystkie przywileje względem bazy analysis: GRANT ALL PRIVILEGES ON DATABASE analysis TO analysisuser;

  • Tworzenie użytkownika alice z hasłem s3cr3tp@ss i bazy app1 której alice jest właścicielem. Ustalam też algorytm szyfrowania hasła:

    • sudo -u postgres psql postgres
    • SET password_encryption = 'scram-sha-256';
    • CREATE USER alice PASSWORD 's3cr3tp@ss';
    • CREATE DATABASE app1 OWNER alice;

Połączenie z bazą danych

Próba połączenia się z bazą danych jako użytkownik analysis:

psql -W -U analysisuser analysis daje błąd

1
psql: error: FATAL:  Peer authentication failed for user "analysisuser

Okazuje się, że domyślny sposób identyfikacji przy połączeniach lokalnych (peer) daje dostęp do bazy użytkownikowi, który jest właścicielem procesu klienta (nazwa użytkownika jest pobierana z kernela). Jeśli więc jestem użytkownikiem karma, to nie mogę się dostać do bazy jako użytkownik analysisuer.

Zmieniam więc odpowiedni wpis w pliku konfiguracyjnym /etc/postgresql/13/main/pg_hba.conf

1
local   all             all                                peer

na

1
local   all             all                                md5

I restartuję serwer:

1
sudo systemctl restart postgresql

Instalacja pgadmin

W ubuntu nie ma gotowego pakietu z pgadmin, więc aby zainstalować pgadmin, postępuję zgodnie z zaleceniami:

  1. Dodaję klucz publiczny służący do weryfikacji repozytorium z pakietami:
1
 sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
  1. Dodaję pakiet właściwy dla mojej wersji ubuntu (o! przy okazji odkrywam sposób na ustalenie swojej wersji systemu: lsb_release) do listy źródeł dla systemu zarządzania pakietami apt i aktualizuję bazę apt-a:
1
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
  1. Instalacja pgadmin (wersja desktop):
1
sudo apt install pgadmin4 pgadmin4-desktop
  1. Uruchomienie: tutaj musiałam sprawdzić, jakie pliki zostały zainstalowane w systemie i czy są w śród nich pliki wykonywalne (dpkg -L pgadmin4-desktop):
1
/usr/pgadmin4/bin/pgadmin4

… i już można się bawić!

Pgadmin - użycie

Pgadmin pyta o hasło główne, którego użyje do zaszyfrowania haseł dostępu do baz danych, do których będę się łączyć przy pomocy pgadmina. Dzięki temu hasła nie będą zapisywane na dysk.

pgadmin4 masterpassword dialog

Mogę połączyć się z bazą i spojrzeć na panel administracyjny: pgadmin dashboard

Mogę utworzyć tabelę i sprawdzić DDL: pgadmin dashboard

Mogę już uruchamiać zapytania: pgadmin query

Przygotowania zakończone

Wszystko gotowe, więc zanurzam się głębiej!


Ten wpis jest częścią serii sql.

Wszystkie wpisy w tej serii: