PostgreSQL je open source objektově-relační databázový systém. Tahák na PostgreSQL
instalace a spuštění služby (jako root)
dnf install postgresql-server postgresql-setup --initdb --unit postgresql systemctl start postgresql.service
instalace
apt-get install postgresql postgresql-client
spustí službu
/etc/init.d/postgresql start
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>;
vytvoří UTF8 databázi <jmeno db>
, vlastník je <uživatel>
podle šablony template0
createdb -E UTF8 -O <uživatel> -T template0 <jmeno db>
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
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'
vypíše uživatele
\du
vypíše databáze
\l
přepne do databáze
\c db_name
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;