====== Postregsql ======
===== Inicialize =====
==== Default konfigurace =====
* přístup do databáze je definován v souboru ''pg_hba.conf''
* příklad z Debian:
vim /etc/postgresql/9.6/main/pg_hba.conf
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
* metoda
* MD5 znamená auth heslem
* peer bere přihlášeného uživatele a heslo vůbec nežádá
* z default konfigurace je vidět, že
* při připojení přes Unix domain socket se bere aktuálně přihlášený uživatel a přístup je povolen pro jakéhokoliv uživatele do jakékoliv databáze
* explicitně je vytažen uživatel postgresql, který se bere jako hlavní
* listetning IP a port se nastavuje v ''postgresql.conf''
* ukázka z Debian:
vim /etc/postgresql/9.6/main/postgresql.conf
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5433 # (change requires restart)
* port bývá standardně 5432, Debian/Ubuntu má jiný
* listen address je localhost, i když je v cfg zakomentovaný
==== Vytvoření první DB ====
* na začátku se lze do databáze přihlásit pouze pod uživatelem postgres
* používá se k tomu terminálová utilita ''psql''
su postgres -c psql
* existují také pomocné binárky:
* ''createdb createlang createuser dropdb droplang dropuser''
* výpis aktuálních databází
postgres=# \l
* nejprve je potřeba přidat uživatele (pokud nechceme použít existujícího)
* vytváří se pomocí ''CREATE ROLE'' (''CREATE USER'' je pouze alias)
* pro [[https://www.postgresql.org/docs/8.1/static/sql-createrole.html|vytvoření uživatele s heslem]] se použije:
CREATE ROLE blackconv WITH LOGIN PASSWORD 'blackconv';
* role lze vypsat pomocí
select * from pg_roles;
* [[https://www.postgresql.org/docs/9.0/static/sql-createdatabase.html|vytvoření databáze]]
CREATE DATABASE blackconv OWNER blackconv;
* ověřit připojení do databáze lze pomocí
* explicitně uvádím localhost, aby se použil tcp socket místo unix, protože implicitně se používá auth mod peer pro unix domain socket
psql -U blackconv -d blackconv -h localhost -p 5433