Narzędzia użytkownika

Narzędzia witryny


fedora:uslugi:postgresql

PostgreSQL

Instalacja

sudo dnf install postgresql-server postgresql-contrib

Uruchomienie usługi

sudo systemctl enable postgresql
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl start postgresql

Tworzenie roli/użytkownika bazy

sudo -u postgres psql
CREATE USER nazwa_uzytkownika WITH PASSWORD 'haslo_uzytkownika';

Tworzenie bazy oraz przydzielenia administratora

CREATE DATABASE mojadb OWNER nazwa_uzytkownika;
\q

Łączenie do bazy

psql -U nazwa_uzytkownika -d mojadb -W

Otwarcie dostępu przez firewall

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --add-port=5432/tcp
sudo firewall-cmd --reload

Polecenia

Wyświetl istniejące bazy

mojadb=> \l

Wyświetl istniejące tabele w bazie

mojadb=> \dt

Tworzenie tabeli o nazwie test_table

Ponadto tabela będzie zawierać pola:

  • no - integer
  • name - text
mojadb=> create table test_table (no int, name text);

Wprowadzenie danych do tabeli test_table

  • pole no - wartość 01
  • pole name - wartość Fedora
mojadb=> insert into test_table (no,name) values (01,'Fedora');

Wyświetlenie wszystkich danych z tabeli test_table

mojadb=> select * from test_table;

Usunięcie tabeli test_table z bazy

mojadb=> drop table test_table;

Usunięcie całej bazy

Wykonujemy z wiersza poleceń systemu.

user@fedora:~$ dropdb mojadb

Zmiana hasła głównego posgres

Jeżeli nie znamy hasła to modyfikujemy plik pg_hba.conf aby dostać się do bazy bez hasła.

sudo nano /var/lib/pgsql/data/pg_hba.conf

Zmieniamy linię

# "local" is for Unix domain socket connections only
local   all             all                                     md5

na linię

# "local" is for Unix domain socket connections only
local   all             all                                     trust

Po modyfikacji restart usługi

sudo systemctl restart postgresql

Logowanie bez hasła

user@fedora:~$ psql -U postgres

Zmiana hasła

postgres=# ALTER USER postgres WITH PASSWORD 'nowe_haslo';

Po zmianie hasła cofamy zmiany w konfiguracji pliku pg_hba.conf.

Ponowne utworzenie bazy mojadb

Jeżeli uprawniony user do bazy mojadb istnieje możemy ponownie ją utworzyć poniższym poleceniem z poziomu użytkownika postgres.

postgres@fedora:~$ createdb mojadb -O nazwa_uzytkownika

Tworzenie użytkownika z linii poleceń systemu

postgres@fedora:~$ createuser bomba

Hasło użytkownika zmieniamy w bazie

ALTER USER bomba WITH PASSWORD 'bombas';

Tworzenie przykładowej tabeli

mojadb=> CREATE TABLE tblPrzykladowa (
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    nazwa TEXT NOT NULL,
    opis VARCHAR(255),
    cena NUMERIC(10,2) CHECK (cena >= 0),
    ilosc INTEGER DEFAULT 0,
    waga REAL,
    dostepny BOOLEAN DEFAULT TRUE,
    data_dodania DATE DEFAULT CURRENT_DATE,
    czas_dodania TIME DEFAULT CURRENT_TIME,
    data_czas TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ip INET,
    email VARCHAR(255) UNIQUE,
    plik BYTEA
    );
  • Omówienie typów danych
Typ Opis Przykładowa wartość
INTEGER Liczba całkowita 10
TEXT Długi tekst 'Produkt A'
VARCHAR(255) Tekst o ograniczonej długości 'Opis produktu'
NUMERIC(10,2) Liczba dziesiętna 199.99
REAL Liczba zmiennoprzecinkowa 1.25
BOOLEAN Wartość logiczna TRUE lub FALSE
DATE Data '2025-03-16'
TIME Czas '14:30:00'
TIMESTAMP Data + czas '2025-03-16 14:30:00'
INET Adres IP '192.168.1.1'
BYTEA Dane binarne [BINARNE DANE]

Przykład dwóch powiązanych tabel

mojadb=> CREATE TABLE miejscowosci (
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    nazwa TEXT UNIQUE NOT NULL
);
 
CREATE TABLE mieszkaniec (
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    imie TEXT NOT NULL,
    nazwisko TEXT NOT NULL,
    miejscowosc_id INTEGER NOT NULL REFERENCES miejscowosci(id) ON DELETE CASCADE,
    CONSTRAINT unikalny_mieszkaniec UNIQUE (imie, nazwisko)
);

Usunięcie wszystkich tabel z bazy jednym poleceniem sql

DO $$ 
DECLARE 
    r RECORD;
BEGIN 
    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') 
    LOOP 
        EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
    END LOOP; 
END $$;
fedora/uslugi/postgresql.txt · ostatnio zmienione: 2025/03/26 18:21 przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki