====== 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