PostgreSQL nebo Postgres je open-source univerzální objektově-relační systém pro správu databází s mnoha pokročilými funkcemi, které vám umožňují vytvářet složité webové aplikace.
V tomto tutoriálu vám ukážeme dvě různé metody, jak nainstalovat PostgreSQL na váš počítač CentOS 7. První metoda vás provede kroky nezbytnými k instalaci PostgreSQL v9.2.23 z repozitářů CentOS, zatímco druhá vám ukáže, jak nainstalovat nejnovější verzi PostgreSQL z oficiálních repozitářů PostgreSQL.
Pokud vaše aplikace nevyžaduje nejnovější verzi, doporučujeme použít první metodu a nainstalovat PostgreSQL z repozitářů CentOS.
Prozkoumáme také základy administrace databáze PostgreSQL.
Předpoklady #
Než budete pokračovat v tomto tutoriálu, ujistěte se, že jste přihlášeni jako uživatel s právy sudo.
Instalovat PostgreSQL z repozitářů CentOS #
V době psaní tohoto článku byla nejnovější verze PostgreSQL dostupná z repozitářů CentOS PostgreSQL verze 9.2.23.
Chcete-li nainstalovat PostgreSQL na váš server CentOS, postupujte podle následujících kroků:
-
Instalace PostgreSQL
Chcete-li nainstalovat server PostgreSQL spolu s balíčkem PostgreSQL contrib, který poskytuje několik dalších funkcí pro databázi PostgreSQL, jednoduše zadejte:
sudo yum install postgresql-server postgresql-contrib
-
Inicializace databáze
Inicializujte PostgreSQL databázi pomocí následujícího příkazu:
sudo postgresql-setup initdb
Initializing database ... OK
-
Spuštění PostgreSQL
Chcete-li spustit službu PostgreSQL a povolit její spuštění při bootování, jednoduše napište:
sudo systemctl start postgresql
sudo systemctl enable postgresql
-
Ověření instalace PostgreSQL
Pro ověření instalace se pokusíme připojit k databázovému serveru PostgreSQL pomocí
psql
a vytiskněte verzi serveru:sudo -u postgres psql -c "SELECT version();"
PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
Instalace PostgreSQL z repozitářů PostgreSQL #
V době psaní tohoto článku byla nejnovější verze PostgreSQL dostupná z oficiálních repozitářů PostgreSQL PostgreSQL verze 10.4. Než budete pokračovat dalším krokem, měli byste navštívit stránku PostgreSQL Yum Repository a zkontrolovat, zda je k dispozici nová verze.
Chcete-li nainstalovat nejnovější verzi PostgreSQL na server CentOS, postupujte podle následujících kroků:
-
Povolení úložiště PostgreSQL
Chcete-li povolit úložiště PostgreSQL, jednoduše nainstalujte úložiště
rpm
soubor:sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
-
Instalace PostgreSQL
Jakmile je úložiště povoleno, nainstalujte server PostgreSQL a balíčky Contrib PostgreSQL pomocí:
sudo yum install postgresql10-server postgresql10-contrib
-
Inicializace databáze
Postup inicializace databáze PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
-
Spuštění PostgreSQL
Spuštění služby PostgreSQL a povolení jejího spouštění při spouštění typu:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
-
Ověření instalace PostgreSQL
Pro ověření instalace se pokusíme připojit k databázovému serveru PostgreSQL pomocí
psql
a vytiskněte verzi serveru:sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)
Role a metody ověřování PostgreSQL #
Přístupová oprávnění k databázi v rámci PostgreSQL jsou řešena pomocí konceptu rolí. Role může představovat uživatele databáze nebo skupinu uživatelů databáze.
PostgreSQL podporuje více metod ověřování. Nejčastěji používané metody jsou:
- Důvěra – S touto metodou se může role připojit bez hesla, pokud jsou splněna kritéria definovaná v
pg_hba.conf
jsou splněny. - Heslo – Role se může připojit zadáním hesla. Hesla lze uložit jako
scram-sha-256
md5
apassword
(čistý text). - Ident – Tato metoda je podporována pouze u připojení TCP/IP. Funguje tak, že získá uživatelské jméno operačního systému klienta s volitelným mapováním uživatelského jména.
- Peer – Stejné jako Ident, ale je podporováno pouze u místních připojení.
Autentizace klienta PostgreSQL je definována v konfiguračním souboru s názvem pg_hba.conf
. Ve výchozím nastavení je pro místní připojení PostgreSQL nastaveno na použití metody ověřování rovnocennými partnery.
postgres
uživatel se vytvoří automaticky při instalaci PostgreSQL. Tento uživatel je superuživatel pro instanci PostgreSQL a je ekvivalentní root uživateli MySQL.
Chcete-li se přihlásit k serveru PostgreSQL jako uživatel postgres, musíte se nejprve přepnout na userpostgres a poté otevřít výzvu PostgreSQL pomocí psql
nástroj:
sudo su - postgres
psql
Odtud můžete komunikovat s vaší instancí PostgreSQL. Chcete-li ukončit prostředí PostgreSQL, zadejte:
\q
Můžete také přistupovat k výzvě PostgreSQL bez přepínání uživatelů pomocí sudo
příkaz:
sudo -u postgres psql
postgres
uživatel je obvykle používán pouze z lokálního hostitele a je doporučeno tomuto uživateli nenastavovat heslo.
psql
binární, což je /usr/pgsql-10/bin/psql
. Vytvoření PostgreSQL role a databáze #
Pouze superuživatelé a role s CREATEROLE
oprávnění může vytvářet nové role.
V následujícím příkladu vytvoříme novou roli s názvem john
databázi s názvem johndb
a udělit oprávnění k databázi.
-
Připojte se k PostgreSQL Shell
sudo -u postgres psql
-
Vytvořte novou roli PostgreSQL
Následující příkaz vytvoří novou roli s názvem „john“:
CREATE ROLE john;
-
Vytvořte novou databázi PostgreSQL
Vytvořte novou databázi s názvem „johndb“ pomocí
createdb
příkaz:CREATE DATABASE johndb;
-
Udělit oprávnění
Chcete-li udělit oprávnění
john
uživatele na databázi, kterou jsme vytvořili v předchozím kroku, spusťte následující dotaz:GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
Povolit vzdálený přístup k serveru PostgreSQL #
Ve výchozím nastavení server PostgreSQL naslouchá pouze na místním rozhraní 127.0.0.1
. Chcete-li povolit vzdálený přístup k vašemu PostgreSQL serveru, otevřete konfigurační soubor postgresql.conf
a přidejte listen_addresses = '*'
v CONNECTIONS AND AUTHENTICATION
sekce.
sudo vim /var/lib/pgsql/data/postgresql.conf
Pokud používáte PostgreSQL verze 10, cesta k souboru je /var/lib/pgsql/10/data/postgresql.conf
./var/lib/pgsql/data/postgresql.conf#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
uložte soubor a restartujte službu PostgreSQL pomocí:
sudo systemctl restart postgresql
Pokud používáte PostgreSQL verze 10, restartujte službu PostgreSQL pomocí systemctl restart postgresql-10
.
Ověřte změny pomocí ss
nástroj:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Jak můžete vidět z výstupu výše, PostgreSQL server naslouchá na všech rozhraních (0.0.0.0).
Posledním krokem je nakonfigurovat server tak, aby přijímal vzdálená připojení, úpravou souboru pg_hba.conf
soubor.
Níže je několik příkladů ukazujících různé případy použití:
/var/lib/pgsql/data/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
Pokud používáte PostgreSQL verze 10, úplná cesta k souboru je /var/lib/pgsql/10/data/pg_hba.conf
.