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
- -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:
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.