Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== PostgreSQL ====== PostgreSQL je plnohodnotným relačním databázovým systémem s otevřeným zdrojovým kódem. Má za sebou více než patnáct let aktivního vývoje a má vynikající pověst pro svou spolehlivost a bezpečnost. Běží na všech rozšířených operačních systémech včetně Linuxu, UNIXů (AIX, BSD, HP-UX, SGI-IRIX, Mac OS X, Solaris, Tru64) a Windows. PostgreSQL je šířen pod BSD licencí, která je nejliberálnější ze všech open source licencí. Tato licence umožňuje neomezené používání, modifikaci a distribuci PostgreSQL. PostgreSQL je možno šířit se zdrojovými kódy nebo bez nich, zdarma nebo komerčně. ([[http://cs.wikipedia.org/postgreSQL|Wikipedie - PostgreSQL]]) ====== Instalace ====== Následujícím příkazem nainstalujeme všechny balíky potřebné k běhu databázového serveru PostgreSQL: <code> sudo apt-get install postgresql postgresql-contrib </code>A pokud chceme databázi propojit se serverem Apache, případně jazykem PHP: <code> sudo apt-get install php5-pgsql libapache2-mod-auth-pgsql </code> Instalace je skutečně takto jednoduchá, ale databáze ještě není použitelná. Musíme jí nejprve nakonfigurovat. Pokud bychom nechtěli instalovat z balíčků, můžeme si aplikaci stáhnout zde: [[http://ftp2.cz.postgresql.org/pub/postgresql/]] ===== Chyba při instalaci ===== Pokud instalace skončí chybou kde je v hlášce uvedeno: <code> unsafe permissions on private key file "server.key" </code>Pak asi nejspíše pomůže, dále uvedený příkaz a nová instalace: <code> /etc/ssl$ sudo make-ssl-cert generate-default-snakeoil --force-overwrite </code> ====== Konfigurace ====== ===== Základní konfigurace ===== Při instalaci nám vznikl v systému nový uživatel s názvem postgres. Tento uživatel je nastaven jako defaultní uživatel databáze PostrgeSQL, čili první přihlášení provedeme přes něj. Abychom se ale mohli přihlásit, potřebujeme znát heslo k uživateli postgres. Toto heslo však není nastaveno, a proto si ho nastavíme: <code> sudo passwd postgres #Změní heslo sudo service postgresql restart #Restartuje server </code>Teď již známe přihlašovací jméno a heslo a můžeme se tedy poprvé přihlásit. ===== První přihlášení ===== Pro první přihlášení použijeme následující příkaz: <code> su postgres #Přihlášení jako administrátor databáze Postgres </code>Určitě bychom chtěli, abychom se mohli přihlašovat naším uživatelským jménem a heslem a k tomu samozřejmě potřebujeme všechna práva a svoji databázi. Uděláme to takto: <code> $ sudo adduser uzivatelske_jmeno_noveho_uzivatele #Zadáváme pouze pokud uživatel v systému ještě neexistuje! $ createuser uzivatelske_jmeno #Vytvoří nového uživatele $ createdb uzivatelske_jmeno #Vytvoří novou databázi </code> Po zadání příkazu createuser budeme muset odpovědět na otázku: * Chcete, aby uživatel byl superuživatel? Jelikož vytváříme svůj účet, tak samozřejmě odpovíme 'a'. Pokud budeme chtít vytvořit jiného uživatele, pak již záleží na nás, co mu dovolíme dělat. ===== Samotná konfigurace ===== V tuto chvíli databázový server sice běhá, ale každý si může vytvořit tabulku v libovolné databázi. To je způsobeno tím, že při vytváření tabulky defaultně vznikne schéma public, do kterého mohou zapisovat všichni uživatelé. To určitě není dobré, a proto to zakážeme. Můžeme to udělat třeba tak, že smažeme schéma public a nahradíme ho vlastním, ale to není úplně ono, a proto to zkusíme přes konfigurační soubor pg_hba.conf: <code> sudo gedit /etc/postgresql/8.3/main/pg_hba.conf #Otevře konfigurační soubor </code>Měli bychom na konci souboru dostat podobný výpis: <code> # Database administrative login by UNIX sockets local all postgres ident sameuser # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident sameuser # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 </code>Teď upravíme konec souboru třeba takto: <code> # Database administrative login by UNIX sockets local all jmeno_superuzivatele ident sameuser # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local sameuser all trust # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 </code>Změnili jsme jméno superuživatele, který má právo ke všem databázím. Dále jsme řekli, že se všichni uživatelé z jedné domény mohou přihlásit pouze ke své databázi. Teď už jenom restartujeme server: <code> sudo service postgresql restart </code>====== PostgreSQL klienti ====== ===== Psql ===== Základní řádkový klient k databázovému serveru PostgreSQL je nainstalován přímo jako závislost (postgres-client) balíku postgres (přesněji jako závislost balíku postgres-8.3, který je závislostí metabalíku postgres). Základní příkazy: <code> jmeno_databaze=# \q #Ukončí klienta jmeno_databaze=# \s #Vypsání historie příkazů jmeno_databaze=# \i [SOUBOR] #Provedení příkazů ze souboru jmeno_databaze=# \d #Zobrazení tabulek v databázi jmeno_databaze=# \d tabulka #Zobrazí strukturu tabulky jmeno_databaze=# \z #Zobrazení práv pro tabulky jmeno_databaze=# \? #Zobrazení PSQL příkazů jmeno_databaze=# \h #Zobrazení SQL dotazů </code>Příkazů je samozřejmě víc, ale tyto by pro začátek měly stačit. ==== Základní komunikace s databází ==== Po nainstalování klienta můžeme konečně začít plně využívat naši databázi. Začneme tak, že se přihlásíme do své databáze. <code> psql </code>Pokud bychom se chtěli přihlásit k jiné databázi, než je naše uživatelské jméno, pak to provedeme takto. <code> psql jmeno_databaze </code>Teď jsme ve své databázi a můžeme konečně vytvářet SQL dotazy. Můžeme si tedy konečně nastavit heslo do databáze. <code> jmeno_databaze=# ALTER USER uzivatel with password 'heslo'; #Změna hesla </code>Pokud jsme vytvořili databázi obyčejnému uživateli, nesmíme zapomenout mu ji také přiřadit: <code> jmeno_databaze=# ALTER DATABASE jmeno_databaze OWNER TO novy_vlastnik; </code>Pokud bylo zapsáno vše v pořádku, mělo by se objevit hlášení o provedení příkazu. Pokud se neobjeví, nastala někde chyba. Nejčastější chybou je vynechání středníku na konci dotazu. ===== PhpPgAdmin ===== Tato aplikace slouží ke grafické administraci databáze PostgreSQL přes webové rozhraní. Instalace probíhá následovně(předpokládá se, že je nainstalováno PHP a Apache): <code> sudo apt-get install phppgadmin #Nainstaluje PhpPgAdmin z repozitářů sudo ln -s /etc/phppgadmin/apache.conf /etc/apache2/conf.d/phppgadmin.conf #Vytvoří symlink </code>==== Problémy s PhpPgAdminem ==== Pokud nám je při spuštění hlášena nějaká chyba, zkusíme toto: <code> sudo gedit /usr/share/phppgadmin/conf/config.inc.php #otevře soubor </code>a změníme: <code> $conf['extra_login_security'] = true; </code>na: <code> $conf['extra_login_security'] = false; </code>restartujeme apache: <code> sudo service apache2 reload </code>Pokud ani teď nejsme úspěšní a hlásí nám to chybu kódování, jedná se o bug, který spravíme následovně: <code> sudo gedit /usr/share/phppgadmin/libraries/lib.inc.php #Otevře soubor </code>Toto: <code> $PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES,$lang['appcharset']); </code>nahradíme za: <code> $PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES,'ISO-8859-1'); </code>**Pokud se vyskytnou problémy s nedostupností PhpPgAdmin přes [[http://localhost/phppgadmin]], nejjednodušším řešením je vytvořit symlink:** <code> sudo ln -s /usr/share/phppgadmin /var/www/phppgadmin </code>====== Práva ====== Přidělení práv danému uživateli: <code> jmeno_databaze=# GRANT INSERT ON tabulka TO uzivatel; #Vytvoří právo uživateli uzivatel vkládat do tabulky tabulka </code>Odebrání práv: <code> jmeno_databaze=# REVOKE prikaz ON seznam FROM uzivatel; </code>Můžeme také přidělovat jstá práva při vytváření uživatele: <code> jmeno_databaze=# CREATE USER uzivatel WITH CREATEDB CREATEUSER; #Uživatel může vytvářet databáze a uživatele </code>Přidělování vlastnictví: <code> ALTER DATABASE jmeno_databaze OWNER TO uzivatel; #Přidělovat můžeme rovněž tabulky nebo schémata </code>O právech se také hovořilo v souvislosti s konfiguračním souborem pg_hba.conf. ====== Klady, zápory a zajímavosti ====== Klady: * Stabilita * Rychlost * "Neokoukanost" - Tím, že jí málo lidí používá, nebývá tolik přetěžována. * Dostupnost - Podporuje jí hodně hostingů. * Nenašel jsem žádné zápory - Databázi mám sice poměrně krátce, ale ani na internetu jsem nenašel žádné nespokojené uživatele. Zajímavosti: * Datový typ **Serial** (inkrementace) - Jedná se vlastně o datový typ //Integer//, ale automaticky je vytvořena sekvence, což umožňuje automatickou inkrementaci. * **Limit** a **Offset** (limit výstupů) - Jedná se o omezení výstupních dat, které není standardem pro každou databázi (Třeba Oracle nic podobného nemá). * **Schémata** - Další příjemná věc, která nám umožňuje mít v tabulkách ještě větší přehled. Tabulky můžeme rozdělit do různých skupin (Schémat) a tím pádem nemusí být hned důvod zakládat pro další projekt jinou databázi. ====== Odkazy ====== * [[http://www.mangui.e-blog.cz/index.php?clanek=4|PostgreSQL - Stáhnutí, instalace, konfigurace a připojení (na Linuxu)]] * Autor návodu: [[http://www.mangui.e-blog.cz|mangui]] {{page>úpravy/konvence}} Poslední úprava: 2019/02/25 17:21autor: 127.0.0.1