Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:adatbazis-szerver:postgresql

< Adatbázis-szerver

PostgreSQL

A PostgreSQL-ről

A PostgreSQL egy nyílt forráskódú adatbáziskezelő rendszer.

A Berkeley Egyetemen egy Ingres nevű adatbáziskezelő szoftvert fejlesztettek az 1970-s évek óta, amit később átneveztek POST-inGRES névre, 1985 körül. 1995-ig a POSTQUEL lekérdező nyelvet használta, ekkor váltottak SQL-re. 1996-tól fejlesztik az egyetemen kívül.

Az Ingres alapján több kereskedelmi szoftver jött létre:

  • Sybase
  • Microsoft SQL Server
  • NonStop SQL

Telepítés

apt install postgresql

Ellenőrzés

Telepítés után ellenőrizzük a foglalt TCP portokat:

$ ss -lt
State      Recv-Q    Send-Q     Local Address:Port       Peer Address:Port
LISTEN     0         128        127.0.0.1:postgresql     0.0.0.0:*
LISTEN     0         128        [::1]:postgresql         [::]:*
$ pstree -c
systemd
   └─postgres
      ├─postgres
      ├─postgres
      ├─postgres
      ├─postgres
      ├─postgres
      └─postgres     
sudo -u postgres psql -c "SELECT version();"

Kérdezzük le a státuszt:

# systemctl status postgresql

A PostgreSQL vezérlése

Leállítás:

# systemctl stop postgresql

Indítás:

# systemctl start postgresql

Újraindítás:

# systemctl restart postgresql

Státusz:

# systemctl status postgresql

A postgres felhasználó

Telepítés után létrejön egy postgres felhasználó. Rendszergazdaként sem férünk hozzá az adatbázis rendszerhez, csak a postgres felhasználón keresztül.

Rendszergazdaként váljunk váljunk posgres felhasználóvá, ha kapcsolódni akarunk:

# su - postgres

Ha van sudo felhasználónk, akkor így is válthatunk felhasználót:

$ sudo su - postgres

Parancssor

A PostgreSQL adatbázishoz a psql klienssel kapcsolódhatunk. Váltsunk postgres felhaszálóra, majd indítsuk el a klienst:

# su - postgres
$ psql
psql (11.5 (Debian 11.5-1+deb10u1))
Type "help" for help.

postgres=#

Kilépés:

postgres=# \q

Felhasználó és adatbázis

pstgres felhasználóként:

$ createuser mari
$ createdb maridb

Más felhasználóként:

sudo su - postgres -c "createuser mari"
sudo su - postgres -c "createdb maridb"

Adjunk meg minden jogot:

postgres=# grant all privileges on database maridb to mari;
alter user mari password 'titok';

Jelszóval:

create user myuser with encrypted password 'mypass';

Adatbázisok

Adatbázis létrehozása:

postgres=# create database test_db;

Adatbázisok listázása:

\l
select datname from pg_database;

Kapcsolódás

# su - postgres
$ psql
postgres=# \c zolzrt
You are now connected to database "zoldzrt" as user "postgres".
zoldzrt=#

Táblázat

Listázás:

zoldzrt=# \dt
Did not find any relations.
zoldzrt=#

Létrehozás:

zoldzrt=# create table dolgozok (
zoldzrt(# id integer primary key,
zoldzrt(# name varchar,
zoldzrt(# city varchar);
CREATE TABLE

Kliensek hitelesítése

Az adatbázis rendszerhez alapértelmezetten csak a postgres linuxos felhasználó fér hozzá.

Ha szeretnénk más felhasználók számára is engedélyezni a hozzáférést a következőket állítsuk be:

# nano /etc/postgresql/11/main/pg_hba.conf 
# "local" is for Unix domain socket connections only
local   all          all                   md5

Indítsuk újra a szolgáltatást:

# systemctl restart postgresql

Felhasználók

postgres=# CREATE USER kati PASSWORD ‘titok’; 
$ psql -d  katidb  -U kati

Biztonság

Ha szeretnék fokozni a védelmet a psql jelszavazásával:

# su - postgres
# psql -c "ALTER USER postgres WITH PASSWORD 'titok';"

Távoli hozzáférés

A távoli hozzáférés alapértelmezetten tiltva van. Szerkesszük a postgresql.conf állományt:

# nano /etc/postgresql/11/main/postgresql.conf

Keressük meg a CONNECTIONS AND AUTHENTICATION részt, és állítsuk be a listen_addresses tulajdonságot:

#-----------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#-----------------------------------------------------

# - Connection Settings -

listen_addresses = '*'
nano /etc/postgresql/15/main/pg_hba.conf

Keressük meg a következő sort:

host   all     all       127.0.0.1/32   scram-sha-256

Cseréljük erre:

host   all     all       0.0.0.0/0      scram-sha-256
# systemctl restart postgresql

Backup/Restore

Mentés

Az egész adatbázis mentése:

# su - postgres
$ pg_dumpall > pg_backup.sql

Egy adatbázis mentése:

$ pg_dump zoldzrt > zoldzrt.sql

Visszaállítás

Visszaállítás vagy restore:

psql uresdb < cegdb.bak

A parancs nem hozza létre az adatbázist, annak már léteznie kell.

createdb -T template0 uresdb
psql uresdb < mentes.bak

Az adatbázis visszaállítás előtt, ha volt egy felhasználó akinek a tulajdonában volt, azt is vegyük fel:

createuser valaki
psql uresdb < mentes.bak

A psql hiba esetén folytatja a helyreállítást és csak a folyamat végén írja ki milyen hibák voltak. Ha bekapcsoljuk az ON_ERROR_STOP tulajdonságot, akkor a hibát azonnal a képernyőre írja.

psql --set ON_ERROR_STOP=on uresdb < mentes.bak

Másik lehetőség, ha a helyreállítást egyetlen tranzakcióként szeretnénk végrehajtani. Így ha hiba van egyáltalán nem történik semmi:

psql -1 uresdb < mentes.bak
psql --single-transaction uresdb < mentes.bak

Teljes mentés visszaállítása

psql -f teljesMentes.bak postgres

Távoli szerver mentése

pg_dump -h gépnév -p port dbnev > mentes.sql
pg_dump -U usernev -h gépnév -p port dbnev > mentes.sql
oktatas/linux/adatbazis-szerver/postgresql.txt · Utolsó módosítás: 2024/01/19 14:09 szerkesztette: admin