Instalacja PostgreSQL

Proszę o zainstalowanie systemu PostgreSQL w dowolnej współczesnej wersji. Jest wiele możliwych sposobów - poniżej propozycje - wszystkie polecenia przetestowałem pod Ubuntu 18.04.4 LTS oraz 20.04.2 LTS

Oficjalna strona systemu, to http://www.postgresql.org/. Jest tam bardzo dobra dokumentacja, która będzie dostępna na sprawdzianach SQL.

Sposób 1. Instalacja z pakietów

sudo apt install postgresql postgresql-client-common
Następnie należy uruchomić psql jako user postgres:
sudo -u postgres psql
i utworzyć użytkownika i bazę o tej samej nazwie co użytkownik w systemie, na którym pracujecie (ułatwi to autoryzację),
np. użytkownik student powinien wydać następujące polecenia (uwaga na średniki!):
   CREATE USER student;
   CREATE DATABASE student;
   GRANT ALL PRIVILEGES ON DATABASE student TO student;
Następnie dostęp do bazy uzyskujemy wydając polecenie psql pracując już jako zwykły użytkownik o podanej powyżej nazwie.

Sposób 2. Docker

Sposób polecany jeśli nie chcecie zaśmiecać sobie systemu lub używacie już postgresa do czegoś innego i chcecie to oddzielić od zajęć.

Materiały dla chcących zrozumieć jak to działa: Docker Hello world: docker 101

1. Instalacja dockera - zgodnie z https://docs.docker.com/install/linux/docker-ce/ubuntu/

Uwaga: W przypadku instalacji z pakietów - pakiet docker to zupełnie coś innego, należy użyć pakietów docker-ce albo docker.io.

2. Ustawienia po instalacji - umożliwiające uruchamienia dockera jako zwykły użytkownik (nie-root): https://docs.docker.com/install/linux/linux-postinstall/
3. Skopiuj następujące pliki do katalogu bieżącego: Dockerfile oraz init-user-db.sh, (do ew. modyfikacji -  instaluje postgresa 12 + postgis oraz pythona)
5. Wydaj polecenie, które zbuduje obraz:
docker build -t bd-postgres .

6. Wydaj polecenie, które uruchomi obraz (można zmienić numer portu hosta (czyli to 5432 przed dwukropkiem poniżej) jeśli jest konflikt z postgresem działającym już w systemie, usuń opcję -d jeśli chcesz widzieć logi na standardowym wyjściu):

docker run  --rm -v datadir:/var/lib/postgresql/data -d -p 5432:5432 bd-postgres

7. Uruchom psql (działa po odczekaniu chwili, jeśli zmieniłeś port to podaj go używając  -p) - hasło ustawia się  w init-user-db.sh - obecnie jest to student

psql -h localhost -U student
Uwaga - ten psql będzie działał w systemie hosta, trzeba go wcześnie zainstalować (ubuntu: pakiet postgresql-client-common) ale jest to dość wygodne rozwiązanie. Jeśli nie chcesz tego robić to możesz `psql` uruchomić wewnątrz dockera tak (przy czym `<nazwa kontenera>` uzupełni się sama po naciśnięciu TAB, możesz też wylistować uruchomione kontenery poleceniem `docker container ls`):
docker exec -it <nazwa kontenera> psql

lub

docker exec -it <nazwa kontenera> /bin/bash       // i potem wewnątrz kontenera: psql
Dodatkowe informacje:
Gdyby kiedyś zaszła konieczność wykonania jakiegoś polecenia jako administrator postgresa wydaj polecenie (hasło ponownie student, ale tym razem jest to hasło ustawione w zmiennej środowiskowej POSTGRES_PASSWORD w Dockerfile):
psql -h localhost -U postgres
Kopiowanie danych do kontenera - z katalogu bieżącego na hoście do katalogu `/home/student` ustawionego jako domyślny katalog roboczy:
docker cp baza.dmp d6b95c4:/home/student/baza.dmp
Zamiast `d6b95c4` wpisujemy hash swojego kontenera, który można sprawdzić za pomocą:
docker container ls
8. Działający kontener można zatrzymać tak (ponownie `<nazwa_kontenera>` można autouzupełnić z użyciem TAB):
docker container stop <nazwa kontenera>
Last modified: Wednesday, 13 April 2022, 7:08 PM