====== 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 $$;
* [[https://www.server-world.info/en/note?os=Fedora_40&p=postgresql&f=1]]
* [[https://docs.fedoraproject.org/en-US/quick-docs/postgresql/]]
===== Uruchomienie w systemie Windows bez instalacji =====
C:\pgsql\bin\initdb -D C:\pgsql\pgdata -U postgres -W -E UTF8 -A scram-sha-256
C:\pgsql\bin\pg_ctl.exe start -D C:\pgsql\pgdata -l C:\pgsql\pgdata\pgsql.log
C:\pgsql\bin\pg_ctl.exe stop -D C:\pgsql\pgdata
C:\pgsql\bin\pg_ctl.exe register -N PostgreSQL -D C:\pgsql\pgdata -l C:\pgsql\pgdata\pgsql.log
C:\pgsql\bin\pg_ctl.exe unregister -N PostgreSQL