LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> PostgreSQL + PHP na Mandrake 10.0

V tomto článku se dozvíte, jak si nastavit na svém počítači databázový server PostgreSQL.

8.4.2004 08:00 | Pavel Kácha | Články autora | přečteno 8223×

V dnešní době jsou databáze hojně využívány pro ukádání dat, ze kterých se generují webové stránky - nezáleží zda jde jen o jednoduchou knihu náštěv nebo o internetový obchod. V oblasti dynamicky generovaných stránek je dnes prakticky dominantni PHP v kombinaci s nějakým databázovým serverem. Většinou to bývá MySQL nebo právě PostgreSQL. A tom, jak nastavit PostgreSQL, abychom si doma mohli vyzkoušet, jak naše stránky fungují, si řekneme v tomto článku. Jelikož nejrozšířenější distribucí v ČR je Mandrake a navíc je (stejně jako tento článek) určen pro začínající uživatele, budu se při výkladu opírat právě o tuto distribuci - konkrétně o verzi 10.0. Pokud používáte jinou distribuci, nevadí, veškerá nastavení budou obdobná, jen se možná někde budou lišit adresáře, kde budou konfigurační soubory uloženy.

Co je to PostgreSQL, jaké má výhody?

PostgreSQL je relační databázový systém, který vznikl na univerzitě v Berkeley a je odvozen ze svého předchůdce POSTGRES. Mnoho lidí používá PostgreSQL raději než další velice rozšířený databázový systém MySQL. Důvodem pro to může být například podpora transakcí (pro ty, kteří nevědí co si pod pojmem transakce představit, uvedu, že transakce je funkce databáze, která dovolí provést několik závislých operacích v jednom bloku příkazů a pokud by nějaký příkaz vedl k chybě, příkazy se zruší a na databázi se neprojeví žádné změny), subselekty, náhledy, tiggery a komplikované blokády. Další výhodou může být licence, pod kterou je PostgreSQL distribuován (jde o Open Source software s licenčními podmínkami BSD), ta totiž říká, že PostgreSQL může být použit i pro komerční využití zcela zdarma (pozn.: u MySQL byste si v takovémto případě měli zakoupit licenci.) Posledním faktorem je i to, že PostgreSQL považuje mnoho lidí za rychlejší při práci s velkými tabulkami. O to se ale vedou časté spory a není mým cílem řešit tento spor.

Co si nainstalovat

Takže máme nainstalovaný Mandrake 10.0, při instalaci jsme nezapomněli vybrat webový server Apache, balíčky s PHP a PostgreSQL a nic nám nebrání začít konfiguraci. Pro jistotu přidávám výpis balíčků, které budeme potřebovat nebo je alespoň dobré je mít nainstalované: apache2-2.0.48-5mdk, apache2-mod_php-2.0.48_4.3.4-1mdk, apache2-common-2.0.48-5mdk, apache2-modules-2.0.48-5mdk, apache2-mod_php-2.0.48_4.3.4-1mdk, php-pgsql-4.3.4-1mdk, php432-devel-4.3.4-3mdk, libphp_common432-4.3.4-3mdk, php-cgi-4.3.4-3mdk, postgresql-contrib-7.4.1-2mdk, postgresql-docs-7.4.1-2mdk, postgresql-server-7.4.1-2mdk, postgresql-test-7.4.1-2mdk, postgresql-7.4.1-2mdk, pgaccess-0.98.8.20030520-1mdk

1. krok - vytvoření uživatele

Nejdříve si vytvoříme uživatele databázového systému, kterého budeme používat pro přístup k databázi, a nastavíme mu heslo a práva. Můžeme to provést dvojím způsobem buď pomocí speciálního programu nebo pomocí jazyka SQL. Ukážeme si oba způsoby.

Pro vytváření uživatelů musíte být přihlášeni jako "správce" databáze. Databáze PostgreSQL má pro svou správu v systému speciální účet s názvem postgres. Otevřete si terminál a nejdříve se přihlašte jako root (příkazem su), poté si znovu změníme identitu na uživatele postgres (příkazem su postgres). Teď je ten pravý čas, abychom se rozhodli jakým způsobem chceme uživatele vytvořit. Pokud jste se rozhodli využít uživatelsky přítulnější program, zadejte createuser a program se vás zeptá jak se má nový uživatel jmenovat, zda může vytvářet databáze a další uživatele. Program defaultně vytváří účty bez hesla, ale pokud použijete přepínač -W, zeptá se vás program i na heslo nového uživatele (jak je v Linuxu dobrým zvykem, tak ani tady se při psaní hesla nic nevypisuje na obrazovce). Výpis programu může vypadat například takto:

bash-2.05b$ createuser -W
Vložte jméno nového uživatele: pavel_db
Měl by mít nový uživatel právo vytvářet databáze? (y/n) y
Měl by mít nový uživatel právo vytvářet další nové uživatele? (y/n) y
Heslo: 
CREATE USER

Pokud navolíte něco špatně není žádný problém uživatele odstranit, stačí na to příkaz dropuser.

Teď se podíváme na vytvoření uživatele pomocí jazyka SQL, slouží k tomu příkaz CREATE USER <uzivatelske_jmeno>, kde místo <uzivatelske_jmeno> zadáte požadované uživatelské jméno. Jako další parametry můžete přidat CREATEDB nebo CREATEUSER. Tyto parametry znamenají, že uživatel může vytvářet databáze, resp. další uživatele. Můžete nastavit i PASSWORD <heslo>. Pro zadávání příkazů jazyka SQL máte nainstalovaný interaktivní terminál psql. Tento program vyžaduje jako argument jméno databáze, může běžet jen pokud je připojen k nějaké databázi. Pokud nazadáte žádný argument pokusí se psql připojit k databázi, jejíž jméno bude shodné s jménem právě přihlášeného uživatele - v tomto případě by to tedy byla databáze postgres, která ale neexistuje, proto se přihlášení nezdaří.

Při instalaci PostgreSQL se vám vytvoří dvě základní databáze template0 a template1. template1 se používá jako předloha pro všechny vytvářené databáze. Veškerá nastavení, která nebudou nastavena při vytváření databáze se nastaví podle template1. K databázi template0 se nelze připojit, protože slouží jako záložní vzorová databáze. Pokud byste omylem poškodili nebo zničili databázi template1, použije se jako šablona právě databáze template0.

Z předchozího odtavce je jasné, že pro spuštění terminálu psql je nutné zadat psql template1. Pokud chcete vytvořit uživatele stejného jako v předchozím příkladu napište

CREATE USER pavel_db PASSWORD 'tajne_heslo' CREATEDB CREATEUSER;

psql má k interním príkazům kvalitní nápovědu v češtině, takže myslím není nutné se tu příliš rozepisovat. Možná jen několik základních příkazů:

\z nebo \dp -- seznam tabulek a přístupových práv
\l -- seznam všech databází
\du -- seznam uživatelů databáze
\g <soubor> -- ukončení příkazu SQL a přesměrování výstupu do <souboru>

K příkazům SQL je přístupná obsáhlá nápověda v angličtině. Stačí zadat \h pro vypsání všech příkazů SQL. Pokud chcete nápovědu ke konkretnímu příkazu napište \h <prikaz> napr.: \h INSERT.

2. krok - nastavení připojení

Nyní si nastavíme, jaká připojení bude PostgreSQL akceptovat (z jakého počítače je možné se připojit, kdo je oprávněn a k čemu). Toto nastavení proveďte v souboru pg_hba.conf (pro jeho editaci musíte být přihlášeni jako root), který (v Mandraku 10.0) najdete v adresáři /var/lib/pgsql/data. Všechna pravidla, podle kterých se budou uživatelé přihlašovat se vpisují jako jednotlivé řádky ve formátu:

<typ_pripojeni>   <databaze>   <uzivatel>   <IP_adresa>   <maska>   <druh_autorizace>

Pokud si chcete vyzkoušet práci s PostgreSQL na svém domácím počítači nebo otestovat stránky před tím než je odešlete na vzdálený databázový server, budete nejspíše chtít, aby bylo možné se připojit k databázi jen z vašeho počítače (localhost), nejlépe pro všechny uživatele a aby bylo možné využívat všechny databáze. Není nic jednoduššího, stačí přidat tento řádek

host   all   all  127.0.0.1     255.255.255.255   trust

Váš počítač jste specifikovali podle jeho IP adresy (127.0.0.1) a masky (255.255.255.255), připojit se mohou všichni uživatelé (all) a mohou využívat všechny databáze (all). Všechny volby, které se dají při nastavování spojení využít, jsou popsané v souboru pg_hba.conf.

Všechno už je připraveno a stačí jen přikázat systému PostgreSQL, aby naslouchal na portu 5432 a byl připravený ke komunikaci přes protokol TCP/IP. Opět existují dvě možnosti. Nejdříve předvedu složitější postup, kterým ale můžete poškodit systém, a proto ho rozhodně nedoporučuji uživatelům, kteří přesně nevědí, co dělají. Aby PostgreSQL přijímal TCP/IP spojení, musí startovat s parametrem -i. Tento přepínač můžete natvrdo dopsat do startovacího scriptu postgresql, který najdete v adresáři /etc/rc.d/init.d/. Parametr -i musíte vepsat do řádky 157, kde dochází ke startu PostgreSQL a nastavení přiděleného portu (výchozí je port 5432). Po zásahu bude tedy tento řádek vypadat takto (přidaný parametr je značen tučně):

su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl  -D $PGDATA -p /usr/bin/postmaster \ 
-o '-i -p ${PGPORT}' start > /dev/null 2>&1" < /dev/null

A teď je čas na druhý, mnohem jednodušší způsob. Jediné, co musíte udělat, je změnit hodnotu proměnné tcpip_socket v souboru /var/lib/pgsql/data/postgresql.conf na true. Opět musíte být přihlášen jako root. Po úpravě bude řádek vypadat takto:

tcpip_socket = true

Zkontrolujte si, že je služba postgresql spuštěna (obrázek 1) - MandrakeControlCenter -> Systém -> Služby, případně ji spusťte, a můžete se připojit. K našemu prvnímu připojení můžeme použít program pgaccess  (najdete ho v menu More Aplications -> Databáze). Z hlavního menu vybereme Databáze -> Otevřít a objeví se nám okno, pro zadání údajů pro připojení. Pokud jste postupovali přesně podle tohoto návodu vyplňte políčka takto (obrázek 2). Pokud se vám nyní neobjevila žádná chyba, máte na svém počítači správně nainstalovaný PostgreSQL.

Poznámka o kódování

PostgreSQL, který jste si nainstalovali z rpm balíčků Mandrake, má bohužel chybně nastavené kódování, přesněji řečeno chybně, pokud chcete používat češtinu a ne cestinu. Abyste ale mohli využívat všech krás našeho mateřského jakyka (omlouvám se čtenářům ze Slovenska :)), používejte při tvorbě nových databází volbu ENCODING. Pokud chcete, aby databáze měla uvedeného jiného vlastníka než toho, pod kterým jste právě přihlášeni, použijte volbu WITH OWNER. Příkaz může vypadat třeba takto (jen podotýkám, že jde o příkaz jazyka SQL, proto ho zadávejte v prostředí psql):

CREATE DATABASE pokus WITH OWNER pavel_db ENCODING='iso8859-2';

Pohodlnější práce pomocí phpPgAdmin

Jestliže jste dosud pracovali s databází MySQL, znáte nejspíš grafické rozhraní phpMyAdmin, které vám umožní spravovat databáze přes webový prohlížeč. Obdobný systém existuje i pro PostgreSQL. Jmenuje se phpPgAdmin a podrobnější informace o něm najdete i na stránkách linuxsoftu.

Po stažení rozbalte soubor do adresáře ~/public_html. Všechny scripty se uloží do adresáře ~/public_html/phpPgAdmin. Opět je nutné provést alespoň základní nastavení, k tomu slouží soubor ~/public_html/phpPgAdmin/conf/config.inc.php. Tady nastavte jazyk, ve kterém chcete systém ovládat, k tomu slouží proměnná $conf['default_lang'], které nastavíte nejspíš hodnotu 'czech'. Nyní najděte proměnnou $conf['servers'][0]['desc'], ve které nastavujete jméno serveru, pod kterým se bude zobrazovat v přihlašovací nabídce. Další proměnnou je $conf['servers'][0]['host'], která určuje adresu serveru, hodnotu nastavte na localhost. Nyní použijeme proměnnou $conf['servers'][0]['port'] pro nastavení portu, na kterém PostgreSQL běží, ponechte přednastavenou hodnotu 5432. Proměnnou $conf['servers'][0]['defaultdb'] nastavíte výchozí databázi, tu je třeba změnit jen pokud nemáte přístup k template1. Proměnné $conf['servers'][0]['pg_dump_path'] a $conf['servers'][0]['pg_dumpall_path'] nastavují cesty k programům pg_dump a pg_dumpall. I tyto proměnné mohou zůstat nezměněné (/usr/bin/pg_dump a /usr/bin/pg_dumpall). Celé nastavení jednoho serveru tak bude vypadat následovně:

$conf['servers'][0]['desc'] = 'PostgreSQL';
$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['port'] = 5432;
$conf['servers'][0]['defaultdb'] = 'template1';
$conf['servers'][0]['pg_dump_path'] = '/usr/bin/pg_dump';
$conf['servers'][0]['pg_dumpall_path'] = '/usr/bin/pg_dumpall';

Pokud byste si potřebovali nastavit připojení k několika serverům, vytvořte i pro ně takovýto blok příkazů, jen v názvech jednotlivých proměnných nahraďte [0] za [1], [2] ...

Poslední zásah do konfiguračního souboru config.inc.php je nutný jen pokud se budete připojovat na účty bez hesla. phpPgAdmin je automaticky nastaven, aby taková spojení odmítal. Ke změně slouží proměnná $conf['extra_login_security'], kterou nastavíte na hodnotu false. Popis konfiguračního souboru by vydal na celý článek, ale ta nejdůležitější nastavení jsem vám tu popsal.

Nyní můžete databázi ovládat pomocí webového rozhraní. Pokud máte v systému účet jménem pavel, stačí do navigační lišty vašeho oblíbeného prohlížeče zadat http://localhost/~pavel/phpPgAdmin/, vyplnit přihlašovací formulář a poté se vám již objeví úvodní obrazovka a můžete pracovat s databází PostgreSQL podle libosti.

Myslím, že základní informace o zprovoznění databáze jste se dozvěděli a teď už vše záleží hlavně na vaší odvaze experimentovat a učit se. Přeji hodně hezkých chvil s databází PostgreSQL.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:04 / Jan Ober
Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:00 / Jan Ober
Re: Gimp

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2022) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze