Řádkový klient psql a změna hesla uživatele
Po instalaci Postgresu na server budete mít k dispozici řádkového klienta psql. Pokud při jeho spuštění nepoužijete žádné parametry, pokusí se připojit k místní databázi jako uživatel, pod kterým jste přihlášeni. Uživatelem s administrátorskými právy je v případě Postgresu uživatel postgres, nikoliv „obvyklý“ uživatel root. Pokud jste uživateli postgres nenastavili vlastní heslo, budete muset získat přístup k DBMS bez hesla, a sice jako unixový uživatel postgres:
su postgres -
Poté můžete spustit klienta psql:
postgres@debian:/root$ psql psql (8.4.7) Pro získání nápovědy napište "help". postgres=#
Chcete-li nastavit uživateli postgres nějaké heslo, abyste mohli k DBMS přistupovat jako databázový uživatel postgres bez nutnosti měnit unixového uživatele pomocí su, použijte buď interaktivní příkaz \password, nebo SQL příkaz ALTER ROLE:
postgres=# ALTER ROLE postgres WITH PASSWORD 'moje_dlouhe_a_bezpecne_heslo';
Budete-li chtít provádět administrátorské úkony třeba ze skriptů spuštěných s právy roota, můžete samozřejmě použít su mechanismu pro změnu efektivního uživatele na postgres, jen je třeba si dát pozor na to, že uživatel postgres má na rozdíl od roota právo zápisu pouze do některých adresářů (zejména /var/lib/postgres, kde sídlí konfigurační i datové soubory DBMS). Jinou možností je nastavit databázovému uživateli postgres heslo a přistupovat k němu pohodlně pod jakýmkoliv uživatelem. Zde ovšem přichází na řadu drobný problém, a sice jakým způsobem nástroji psql předat heslo, aby nebylo nutné jej pokaždé zadávat interaktivně. Za tímto účelem můžete použít soubor .pgpass, který vytvořte ve svém domovském adresáři se obsahem podle následujícího vzoru:
jmeno_pocitace:port:databaze:uzivatel:heslo
Konkrétní příklad pro Postgres běžící na localhostu na standardním portu, uživatele postgres a libovolnou databázi by mohl vypadat třeba takto:
localhost:5432:*:postgres:moje_dlouhe_a_bezpecne_heslo
Samotné přihlášení k DBMS pomocí psql pak provedete takto:
psql -U postgres -h localhost -p 5432
Parametr -U značí uživatele, -h název počítače, na kterém běží DB, a -p udává port (Postgres standardně běží na portu 5432).
Nouzový rychlokurz psql
Jste-li zvyklí převážně na MySQL a na příkazy typu SHOW DATABASES či SHOW TABLES, které vám v psql určitě fungovat nebudou, hodí se vám tento nouzový rychlokurz klienta psql. Dodávám, že samotný nástroj psql má velmi dobrou dokumentaci, kterou určitě doporučuji prostudovat.
Globální operace
-
\l- vypíše seznam databází a základních informací o nich -
\db- vypíše seznam tablespaces -
\dg- vypíše seznam rolí -
\dn- vypíše seznam schémat -
\password [uzivatel]- interaktivní nastavení hesla uživateleuzivatel; pokud nebude zadán uživatel, změna se bude týkat aktuálně přihlášeného uživatele -
\c [databaze] [uzivatel] [pocitac] [port]- připojí se k databázi
Operace nad konkrétní databází
-
\di- vypíše seznam indexů -
\ds- vypíše seznam sekvencí -
\dt- vypíše seznam tabulek -
\dv- vypíše seznam pohledů (views)
Webový klient phppgadmin
phppgadmin: Uživatel postgres přihlášený ihned po instalaci
Znáte-li MySQL, znáte také určitě vynikajícího webového klienta/správce phpMyAdmin. Ten je ovšem stavěn pouze pro MySQL a pro Postgres jej není možné použít. Existuje však jiný projekt, a sice phpPgAdmin, který se snaží kráčet ve stejných šlépějích jako phpMyAdmin, přičemž je stavěn pro Postgres. Jeho instalace v Debianu je velmi jednoduchá, stačí nainstalovat příslušný balíček:
aptitude install phppgadmin
Používáte-li webový server Apache, bude jeho konfigurace automaticky upravena při instalaci balíčku, a to přidáním symbolického odkazu phppgadmin do /etc/apache2/conf.d. Pro úplnost dodávám, že tento symbolický odkaz ukazuje na /etc/phppgadmin/apache.conf. Výchozí úprava konfigurace pro Apache je poměrně restriktivní, umožňuje pouze připojení z localhostu. Pokud budete chtít tento nástroj využívat k provádění správcovských činností, nemusí být od věci to tak nechat (a použít SSH tunel), popřípadě povolit přístup pouze z některých počítačů:
allow from 1.2.3.4
phppgadmin: Pohled na nově vytvořené databáze
Samotné přihlášení administrátora je v phppgadmin rovněž zakázáno. To má na svědomí volba extra_login_security v /etc/phppgadmin/config.inc.php:
$conf['extra_login_security'] = true;
Jste-li si jisti, že chcete přihlášení správců opravdu povolit, je třeba tuto volbu nastavit na false.
Desktopový GUI klient pgAdmin III
pgAdmin III je patrně nejlepší dostupný FOSS nástroj určený pro správu Postgres DBMS. Jedná se o multiplatformní desktopovou aplikaci, která umožňuje připojení k místním i vzdáleným databázím, jejich pohodlnou správu i klasický SQL přístup. SQL dotazy je možné zadávat ručně nebo je sestavit graficky. Podporuje jak Postgres, tak některé jeho komerční a proprietární klony. Je schopen zobrazit a pracovat s veškerými Postgres objekty, ke kterým umí i zobrazit jejich SQL definice (což by mělo být vidět na screenshotu níže).
Pohled na jednu z tabulek v pgAdmin III
Jednoduchý SQL dotaz v pgAdmin III
Tento nástroj je běžně dostupný v repozitářích linuxových distribucí, v Debianu se jedná o balíček pgadmin3.
Grafické sestavení dotazu v pgAdmin III
Samotné připojení ke vzdálené databázi je možné provést řadou způsobů. Pro správce je patrně nejrychlejší použít SSH tunel, jehož vytvoření je popsáno v Úvodu do SSH pro správce. Je samozřejmě také možné nastavit Postgres, aby přijímal spojení ze sítě a umožňoval přihlášení uživatele či uživatelů z určité IP adresy. K tomu slouží konfigurační soubor pg_hba.conf, který v Debianu Squeeze s Postgresem 8.4 naleznete v /etc/postgresql/8.4/main/.
Zálohování Postgresu
K zálohování konkrétní databáze se používá nástroj pg_dump, který má stejné parametry jako interaktivní klient psql. Zálohování databáze postfix dostupné na místním serveru a na standardním portu by se tedy s použitím uživatele postgres provedlo takto:
pg_dump -U postgres -h localhost -p 5432 postfix > zaloha_postfix.sql
Výstupem je obsah tabulky v SQL, který by se vypsal na standardní výstup (tedy obvykle přímo do konzole), proto bylo v tomto případě použito přesměrování do souboru zaloha_postfix.sql. V případě větší databáze by bylo vhodnější zapojit kompresi, například takto:
pg_dump -U postgres -h localhost -p 5432 postfix | gzip > zaloha_postfix.sql.gz
Chcete-li zazálohovat celý databázový cluster, použijete nástroj pg_dumpall, prakticky totožným způsobem jako pg_dump, pouze neuvedete název konkrétní databáze pro zálohování (zde už raději uvádím pouze příklad s kompresí):
pg_dump -U postgres -h localhost -p 5432 | gzip > zaloha_clusteru.sql.gz
Obnova ze záloh
Tento článek začal představením klienta psql a tímto nástrojem také skončí. Jelikož záloha DB/DBMS má podobu sady SQL příkazů uložených v určitém souboru, není nic jednoduššího než vzít klienta psql a všechny SQL příkazy postupně provést, takto:
psql -U postgres -h localhost -p 5432 < zaloha.sql
V případě komprimovaného archívu si můžete pomoci rourou, takto:
gzip -c -d zaloha_clusteru.sql.gz | psql -U postgres -h localhost -p 5432
Nezapomeňte se přečíst náš seriál o optimalizaci PostgreSQL.






