Konfigurace

Když budete mít štěstí, vystačíte si s defaultním nastavením DBMS. Pro případ, že byste štěstí neměli, zmíním tu alespoň pár věcí, se kterými můžete začít při řešení svých problémů. Kompletní konfigurační příručku v jedné kapitole ale nečekejte :-). Tu najdete v online tutoriálu v kapitole III. Server Administration.

PostgreSQL

V kaptiole Instalace PostgreSQL jsem probral jak spustit či vypnout server, případně zjistit jeho status. Dále jak vytvořit uživatele a databázi.

V kapitole Začínáme s PostgreSQL jsem se zmínil o programu pg_dump, který se používá k zálohování a obnově zálohy.

V kapitole o přistupových právech je část věnovaná konfiguračnímu souboru pg_hba.conf, který řídí možnosti připojení k DBMS.

V kapitole Datum a čas jsem probral konfiguraci časových zón a nastavení formátu času.

V kapitole o Vytváření uživatelských funkcí jsem popsal, jak přidat do Postgresu jazyk PL/Python.

Příkaz pro zjištění umístění konfiguračního souboru je SHOW config_file. Musíte mít ale příslušná práva, aby se vám jméno souboru ukázalo:

rimmer1=# SHOW config_file;    
            config_file            
-------------------------------------
 /var/lib/pgsql/data/postgresql.conf
(1 řádka)

Všechno co v konfiguračním souboru začíná znakem # je komentář. V souboru je spoustu příkladů toho, co můžete nastavit. Naprostou většinu věcí nebudete muset měnit :-). Co která volba znamená se pak dočtete v dokumentaci.

Pokud byste chtěli vědět, kde se data fyzicky ukládají, tak to vám řekne příkaz SHOW data_directory;.

 SHOW data_directory;
   data_directory    
---------------------
 /var/lib/pgsql/data
(1 řádka)

Log level

Log level, přesněji proměnná client_min_messages určuje, jaké všechny zprávy se vám při spouštění SQL příkazů budou zobrazovat. Například od verze Postgresu 9.3 se nezobrazují NOTICE o vytvoření implicitních indexech a sequencích (např. při použití typu serial), pokud nenastavíte hodnotu client_min_messages alespoň na DEBUG1.

rimmer1=> SHOW client_min_messages;
 client_min_messages
---------------------
 notice
 (1 řádka)

Možnosti nastavení jsou: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, a PANIC.

rimmer1=> SET client_min_messages TO DEBUG1;
SET

Příkaz SET client_min_messages TO DEBUG1; můžete zapsat do souboru ~/.psqlrc, abyste jej nemuseli zapisovat při každém spuštění klienta psql.

Konfigurace psql

Klient psql se obvykle snaží při startu spustit soubory /etc/psqlrc a ~/.psqlrc. Uživatelé Linuxu určitě vědí, kde tyto soubory najít, uživatelům Windows úplně neporadím, ale soubor psqlrc hledá klient psql v %APPDATA%\postgresql\psqlrc.conf.

Pokud vás, stejně jako mě, obtěžuje v psql stránkování při výpisu, vložte si do ~/.psqlrc tuto řádku:
\pset pager off

V Linuxu se označuje vlnovkou ~ domovský adresář. Soubor ~/.psqlrc má pro uživatele petr reálnou cestu /home/petr/.psqlrc.
V Linuxu také platí, že všechny soubory začínající tečkou jsou skryté (defaultně je nevypíše příkaz ls). Proto začínají konfigurační soubory v Linux obvykle tečkou. We Windows jsou bez tečky.

Historie SQL příkazů se ukládá do souboru ~/.psql_history (ve Windows %APPDATA%\postgresql\psql_history).

Upgrade

Po upgrade Linuxu se někdy může stát, že se vám postgres odmítne nastartovat (a příkaz systemctl status postgresql ani neukáže žádnou chybu).

To může být způsobeno nekompatibilitou mezi novou verzí postgresu a binárním formátem, ve kterém je uložená databáze (z předchozí verze).

Jak tomu předejít

Před upgradem dumpněte všechny své databáze pomocí programu pg_dump a po upgradu starý adresář s postgesql daty smažte, znovu inicializujte a databázi ze zálohy znovu nahrajte.

Smazání staré databáze a inicializace nové může vypadat nějak takto:

bash$ mv /var/lib/pgsql /var/lib/pgsql.old
bash$ mkdir /var/lib/pgsql
bash$ chown -R postgres: /var/lib/pgsql/
bash$ su postgres
bash$ initdb /var/lib/pgsql/

Teď už by měl postgres nastartovat (ie. příkazem systemctl start postgresql). Budou vytvořené pouze systémové databáze, takže dalším krokem je nahrát dumpnuté zálohy.

Upgrade pomocí pg_upgrade

Pokud máte nainstalovný starý i nový postgres v jednom okamžiku, můžete upgradovat databázi pomocí programu pg_upgrade. Toto je pravděpodobnější ve Windows, takže ukáži příklad příkazu pro ně:

> pg_upgrade.exe
        --old-datadir "C:/Program Files/PostgreSQL/8.4/data"
        --new-datadir "C:/Program Files/PostgreSQL/9.0/data"
        --old-bindir "C:/Program Files/PostgreSQL/8.4/bin"
        --new-bindir "C:/Program Files/PostgreSQL/9.0/bin"

V Linuxu najdete program pg_upgrade v balíčku postgresql96-contrib (nebo nějak podobně pojmenovaném). V příkazu samozřejmě budete muset změnit cesty k adresáři s novými a starými daty a binárkami nového a starého postgresu.

MySQL

Spuštění / vypnutí / restartování serveru MySQL se dělá stejně jako Postgresu. Jen místo Postgres napíšete mysql :).

V kapitole o přístupových právech jsem se zmínil o tom, kde najít informace o zjišťování nastavených přístupových právech a o volbě bind-address.

V kapitole o datu a času se dočtete, jak v MySQL nainstalovat časové zóny.

Nevím jak v MySQL zjistit, z jakého konfiguračního souboru načetl sever své volby, protože konfigurační soubor můžete serveru nastavit při spuštění na příkazové řádce. Můžete ale zjistit defaultní umístění souborů, ze kterých mysqld čte konfiguraci:

bash$ /usr/sbin/mysqld --help --verbose | grep "Default options" -A 1
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

Další informace můžete zjistit pomocí skriptu my_print_defaults.

bash$ my_print_defaults mysql
--default-character-set=utf8mb4
--user=petr
bash$ sudo my_print_defaults mysqld
root's password:
--port=3306
--socket=/var/run/mysql/mysql.sock
--datadir=/var/lib/mysql
--skip-external-locking
--key_buffer_size=32M
--max_allowed_packet=16M
--table_open_cache=128
--sort_buffer_size=512K
--net_buffer_length=16K
--read_buffer_size=256K
--read_rnd_buffer_size=512K
--myisam_sort_buffer_size=8M
--log-bin=mysql-bin
--binlog_format=mixed
--server-id=1

Všiměte si, že defaultní hodnoty pro server (mysqld) zjišťuji jako root.

Kde jsou data fyzicky uložená zjistíte následujícím příkazem:

mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

Soubor ~/.my.cnf

Soubor ~/.my.cnf se používá pro nastavení konfigurace hned několika programů. Můžete tam nastavit konfiguraci pro server (mysqld). Server čte soubor ~/.my.cnf toho uživatele, který serve spouští (přesněji řečeno, pod kterým uživatelem je server spouštěn).

V tomto souboru si spíš budete nastavovat konfiguraci pro klienta mysql a pro program pro dumpování databáze myqsldump. Každý program má v souboru svou sekci, která začíná názvem programu uzavřeným v hranatých závorkách:

[mysql]
default-character-set=utf8
user=petr
i-am-a-dummy

[mysqldump]
user=petr

V příkladu se nastavuje pro klienta defaultní kódování na UTF-8, uživatel na petr a ještě volba "i-am-a-dummy", která vám zabrání například ve spuštění příkazu DELETE bez podmínky WHERE (a v dalších „nebezpečných“ příkazech).

Pro program mysqldump je nastaveno jen defaultní uživatelské jméno na petr. (Vzhledem k tomu, že defaultní uživatelské jméno je jméno uživatele operačního systému, asi to nastavovat nebudete muset).

Do tohoto souboru můžete uložit i heslo, ale pak si ho bude moci přečíst každý, kdo získá přístup k vašemu počítači, takže se to nedoporučuje.

O programu mysqldump jsem psal už v kaptiole Začínáme s PostgreSQL.

Historie příkazů se ukládá do ~/.mysql_history.

SQLite

Program SQLite čte konfiguraci ze souboru ~/.sqliterc . Můžete do něj zapsat všechny metapříkazy, které v sqlite3 zobrazíte metapříkazem .help.

.headers ON
.mode column
PRAGMA foreign_keys = ON;

Historie SQL příkazů se ukládá do souboru ~/.sqlite_history.

Zálohu (dumpování) databáze můžete provést metapříkazem .dump.

Oracle

V kaptiole Začínáme s PostgreSQL se dočtete o dumpování a nahrávání dat.

V kaptiole Datum a čas se dozvíte něco o tom, jak nastavit defaultní formát času.

Pokud potřebujete rekonfigurovat Oracle XE, můžete to zkusit takto:

  1. Smažte soubor /etc/sysconfig/oracle-xe nebo v /etc/default/oracle-xe změňte CONFIGURE_RUN=true na CONFIGURE_RUN=false
  2. Spusťte (jako administrátor): /etc/init.d/oracle-xe configure

Možná se tím připravíte o všechny data v databázi, takže si je raději nejdříve zálohujte.

Každopádně vám přeji hodně štěstí :-).

Komentář Hlášení chyby
Created: 3.4.2014
Last updated: 19.4.2018
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..