Uživatelské nástroje

Nástroje pro tento web


navody:postgresql

PostgreSQL

PostgreSQL je open source objektově-relační databázový systém. Tahák na PostgreSQL

Instalace - Fedora

instalace a spuštění služby (jako root)

dnf install postgresql-server
postgresql-setup --initdb --unit postgresql
systemctl start postgresql.service

Instalace - Debian

instalace

apt-get install postgresql postgresql-client

spustí službu

/etc/init.d/postgresql start

Nastavení

vytvoření uživatele a databáze

su postgres
createuser <username>
createdb <dbname>
psql
alter user <username> with encrypted password '<password>';
grant all privileges on database <dbname> to <username>;

Databáze

vytvoří UTF8 databázi <jmeno db>, vlastník je <uživatel> podle šablony template0

createdb -E UTF8 -O <uživatel> -T template0 <jmeno db>

Uživatelé

su postgres
createuser --superuser puser
echo "ALTER USER puser WITH PASSWORD '<heslo>';" | psql

při pokusu přihlášení jako puser se objeví chyba psql: FATAL: Peer authentication failed for user „puser“ Lze vyřešit nahrazením ident a peer metodou md5 v souboru /var/lib/pgsql/data/pg_hba.conf

Vzdálený přístup na server

v souboru /etc/postgresql/<verze>/main/pg_hba.conf je třeba přidat řádek pro povolení síťe 10.10.29.0

host all all 10.10.29.0/24 md5

v souboru /etc/postgresql/<verze>/main/postgresql.conf je třeba nastavit adresu na které bude server naslouchat

listen_addresses='10.10.29.2'

Psql příklady

vypíše uživatele

\du

vypíše databáze

\l

přepne do databáze

\c db_name

SQL příklady

nastaví majitele databáze

ALTER DATABASE db_name OWNER TO user_name

změní heslo uživatele

ALTER USER user_name WITH PASSWORD 'pass';

vypíše sloupce, které se odkazují na konkrétní sloupec

SELECT R.table_schema, R.table_name, R.column_name, FK.update_rule, FK.delete_rule
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE u
INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS FK
    ON U.CONSTRAINT_CATALOG = FK.UNIQUE_CONSTRAINT_CATALOG
    AND U.CONSTRAINT_SCHEMA = FK.UNIQUE_CONSTRAINT_SCHEMA
    AND U.CONSTRAINT_NAME = FK.UNIQUE_CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE R
    ON R.CONSTRAINT_CATALOG = FK.CONSTRAINT_CATALOG
    AND R.CONSTRAINT_SCHEMA = FK.CONSTRAINT_SCHEMA
    AND R.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
WHERE U.COLUMN_NAME = 'id'
  AND U.TABLE_CATALOG = 'db_name'
  AND U.TABLE_SCHEMA = 'public'
  AND U.TABLE_NAME = 'table_name'

Zobrazí, kolik zabírají jednotlivé tabulky

SELECT
    relname AS "Object",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "Total Size",
    pg_size_pretty(pg_total_relation_size(C.oid) - pg_relation_size(C.oid)) AS "External Size"
FROM
    pg_class C
LEFT JOIN
    pg_namespace N ON (N.oid = C.relnamespace)
WHERE
    nspname NOT LIKE 'pg_%'
    AND nspname != 'information_schema'
    AND relkind IN ('r', 'm', 'S', 'f')
ORDER BY
    pg_total_relation_size(C.oid) DESC;
navody/postgresql.txt · Poslední úprava: 2023/06/19 15:45 autor: jules