PostgreSQLMySQL

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
34. sor: 34. sor:
   
 
===Adminisztratív feladatok ellátása===
 
===Adminisztratív feladatok ellátása===
  +
  +
====Adatbázis-klaszter létrehozása====
  +
  +
*Először létre kell hozni új adatbázis-klasztert
  +
*Egy PostgreSQL adatbázis-klaszter adatbázisok egy gyűjteménye, amelyekért ugyanazon szerver folyamat felel
  +
*initdb program segítségével tehetjük meg
  +
*A program a következő műveleteket hajtja végre:
  +
**Könyvtárak létrehozása, amelyekben az adatbázisok tárolásra kerülnek majd
  +
**Közös katalógus táblák generálása (ezek a teljes klaszterhez tartoznak)
  +
**template1 és postgres adatbázisok létrehozása
  +
***template1 sablon adatbázis, amelynek objektumai automatikusan belekerülnek minden később, újonnan létrehozott adatbázisba
  +
***postgres az alapértelmezett adatbázis mindenki számára
  +
*Az initdb programot annak a felhasználónak kell lefuttatnia, akié a szerver folyamat is (mivel a szerver folyamat hozzá kell hogy férjen a létrehozott könyvtárakhoz). Ez nem egyezik meg az operációs rendszer rootjával, alapértelmezés szerint egy postgres nevű felhasználó, amely a PostgreSQL telepítésekor jön létre
  +
*initdb néhány fontosabb kapcsolója:
  +
**-A, --auth : milyen azonosítása legyen az operációs rendszer felhasználóinak (pg_hba.conf fájlban kerül tárolásra, ahol hba = host-based authentication). Lehetséges értékei:
  +
***trust
  +
**-D, --pgdata : melyik könyvtárban tároljuk az adatbázis-klasztert. Megadása kötelező
  +
**-U, --username: mi legyen a superuser neve. Alapesetben a szerverfolyamat tulajdonosának neve, postgres. Meg is változhatható, kényelmi szempontból
  +
**-W, --pwprompt: az initdb jelszót is bekér a superuser accounthoz
   
 
====Felhasználók, adatbázisok létrehozása====
 
====Felhasználók, adatbázisok létrehozása====

A lap 2007. december 8., 18:59-kori változata

Tartalomjegyzék

1 PostgreSQL és MySQL összehasonlítása adminisztrátor szemszögéből

Először külön áttekintem a két DBMS-t, majd a végén térek rá a különbségekre.

1.1 PostgreSQL

  • Többfelhasználós RDBMS
  • Berkeley Egyetemen kifejlesztett POSTGRES objektum-relációs adatbáziskezelő rendszer nyílt forrású bővítése
  • Természetesen jelentős szolgáltatás-növelés történt azóta
  • Kliens-szerver architektúrájú (a szerver program neve postmaster)
  • UNIX-alapú rendszereken fut csak, ezért Windowson csak is Cygwin vagy MinGW telepítése után használható (mármint a szerverprogram)

1.1.1 Telepítés

  • RedHat esetén rpm csomagból. Le kell tölteni az összes szükséges csomagot, majd futtatni kell a következő parancsot:
    • rpm -ivh postgresql-*
  • Néhány főbb csomag, amikre szükség lehet:
    • postgresql : alapcsomagok
    • postgresql-contrib : kiegészítő csomagok
    • postgresql-devel : alkalmazások fejlesztéséhez és fordításához. A kiszolgáló telepítéséhez feltétlenül szükséges
    • postgresql-jdbc : Java DataBase Connectivity-t lehetővé tevő csomag
    • postgresql-libs : megosztott programkönyvtárak
    • postgresql-odbc : Open DataBase Connectivity, API amit nagyon sok eszköz támogat
    • postgresql-perl : Perlben lehessen kiegészítőket írni
    • postgresql-python : ugyanez Pythonban
    • postgresql-server : akkor kell, ha nem csak távoli hosthoz kapcsolódunk, hanem helyileg is működtetünk szervert
  • Debian-alapú rendszer esetén mindössze egy parancs a telepítés:
    • apt-get install postgresql
  • Természetesen forrásból is telepíthető a szokásos ./configure, make, make install hármassal. A forrás letölthető a http://www.postgresql.org oldalról
  • A szerver elindítása /etc/init.d/postgresql start paranccsal történik. Előfordulhat, hogy a postgresql szó után kötőjelet, majd a verziószámot meg kell adni.

1.1.2 Adminisztratív feladatok ellátása

1.1.2.1 Adatbázis-klaszter létrehozása

  • Először létre kell hozni új adatbázis-klasztert
  • Egy PostgreSQL adatbázis-klaszter adatbázisok egy gyűjteménye, amelyekért ugyanazon szerver folyamat felel
  • initdb program segítségével tehetjük meg
  • A program a következő műveleteket hajtja végre:
    • Könyvtárak létrehozása, amelyekben az adatbázisok tárolásra kerülnek majd
    • Közös katalógus táblák generálása (ezek a teljes klaszterhez tartoznak)
    • template1 és postgres adatbázisok létrehozása
      • template1 sablon adatbázis, amelynek objektumai automatikusan belekerülnek minden később, újonnan létrehozott adatbázisba
      • postgres az alapértelmezett adatbázis mindenki számára
  • Az initdb programot annak a felhasználónak kell lefuttatnia, akié a szerver folyamat is (mivel a szerver folyamat hozzá kell hogy férjen a létrehozott könyvtárakhoz). Ez nem egyezik meg az operációs rendszer rootjával, alapértelmezés szerint egy postgres nevű felhasználó, amely a PostgreSQL telepítésekor jön létre
  • initdb néhány fontosabb kapcsolója:
    • -A, --auth : milyen azonosítása legyen az operációs rendszer felhasználóinak (pg_hba.conf fájlban kerül tárolásra, ahol hba = host-based authentication). Lehetséges értékei:
      • trust
    • -D, --pgdata : melyik könyvtárban tároljuk az adatbázis-klasztert. Megadása kötelező
    • -U, --username: mi legyen a superuser neve. Alapesetben a szerverfolyamat tulajdonosának neve, postgres. Meg is változhatható, kényelmi szempontból
    • -W, --pwprompt: az initdb jelszót is bekér a superuser accounthoz

1.1.2.2 Felhasználók, adatbázisok létrehozása

  • Kezdetben egyetlen felhasználó létezik, melynek neve postgres.
  • A rendszergazda beléphet az 'su postgres' paranccsal (Ubuntu esetén 'sudo su postgres')
  • Felhasználó létrehozása a 'createuser <username>' paranccsal. Néhány kapcsoló:
    • -s, --superuser: a felhasználó superuser lesz
    • -d, --createdb: a felhasználó hozhat majd létre adatbázisokat
    • -D, --nocreatedb
    • -r, --createrole: a felhasználó hozhat majd létre szerepeket (tehát felhasználókat vagy csoportokat)
    • -R, --nocreaterole
    • -c, --connection-limit: egyszerre hány kapcsolatot létesíthet a felhasználó
    • -P: a parancs kiadása után meg kell adni jelszót
    • -E: a jelszót titkosítva tárolja a szerver
    • -N: jelszó ne legyen titkosítva
  • Felhasználó törlése 'dropuser <username>' paranccsal
  • Adatbázis létrehozása 'createdb <adatbazisnev>' paranccsal. Néhány kapcsoló:
    • -D, --tablespace: tablespace megadása. A tablespace egy könyvtár a file rendszeren, ahová a tablespace-hez tartozó táblák eltárolásra kerülnek. A tablespace-nek van neve, amivel hivatkozni lehet rá (hasznos lehet pl., ha több különböző sebességű lemezünk van)
    • -O, --owner: melyik felhasználó lesz az adatbázis tulajdonosa
    • -T, --template: sablon adatbázis, amely alapján az új adatbázis felépül. Kezdetben két sablon van:
      • template1: ez az alapértelmezett sablon, ha nem adjuk meg a -T kapcsolót, akkor ezt az adatbázist másolja át az új helyére is. Ilyen módon állíthatunk be telepítés-specifikus beállításokat, alapvető táblákat, felhasználókat stb. amelyek/akik minden adatbázis részei.
      • template0: csupasz sablon, ezt az adatbázist soha ne módosítsuk az initdb lefuttatása után (hasznos lesz pl., ha pg_dump segítségével építünk fel újra régebbi adatbázist)
    • -h, --host: melyik hoston fut a szerver. Ha /-jellel kezdődik, akkor Unix-domain socketet adunk meg
    • -p, --port: melyik porton figyel a szerver
    • -U, --username: melyik felhasználóként csatlakozzon alapértelmezés szerint
    • -W, --password: kötelező legyen jelszó megadása
  • Adatbázis törlése 'dropdb <adatbazisnev>' paranccsal
  • Adatbázisba belépni a 'psql <adatbazisnev>' paranccsal lehet
    • Ha nem adjuk meg az adatbazis nevét, akkor a felhasználó alapértelmezett adatbázisába lép be. Ha ilyen nem létezik, hiba. (Itt felhasználó alatt az operációs rendszer felhasználóját értjük.)
    • Ha más felhasználó adatbázisába szeretnénk belépni, mint amelyik be van jelentkezve az operációs rendszerbe (pl. mert más a felhasználónevünk a kettőben - nem kell egyezniük, semmi közük egymáshoz), akkor az -U kapcsolót használhatjuk.
  • A felsorolt programocskák (createuser, dropuser, createdb, dropdb) frontendet jelentenek bizonyos PostreSQL-utasításokhoz. Ugyanezek a műveletek elvégezhetőek tehát PostgreSQL parancssornál is, CREATE ROLE, DROP ROLE, CREATE DATABASE, illetve DROP DATABASE utasításokkal.
Személyes eszközök