Контакти

Телефони

  • +38 (044) 360 53 20
  • +38 (050) 161 74 60
  • +38 (068) 979 32 34

Адреса

  • вул. Велика Васильківська, 69
  • Київ, Україна

Електронна пошта

  • Години роботи:
  • пн-пт з 10.00 до 18.00

2. Розгортання та налаштування бази даних PostgreSQL під операційною системою FreeBSD 10.3

SoftPro: Аренда+
Створено:
Останнє оновлення:
Теги: PostgreSQL

Опис:

PostgreSQL 9.5 використовує за замовчуванням кодування UTF-8. Оскільки в якості операційної системи обрано FreeBSD 8.1, яка не повноцінно підтримує це кодування, є особливості локалізації. З UTF-8 не вміє працювати консольний драйвер syscons, тобто ви не зможете використовувати UTF-8 в текстовій консолі.

Найбільш зручним способом локалізації системи є метод Class Login, описаний в handbook –

http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/using-localization.html.


Якщо ви використовуєте інший спосіб локалізації і тим більше, використовуєте KOI8-R, то вам доведеться подбати про те, щоб користувач pgsql (з'явиться після установки postgresql з порту) мав локаль UTF-8. Так само є можливість змусити працювати postgresql з кодуванням KOI8-R, але це вважається недоцільним. Використання KOI8-R далі в тексті не розглядається.


Установку робимо з портів, але не безпосередньо, а за допомогою portmaster, який можна знайти в

 /usr/ports/ports-mgmt/portmaster


Якщо раніше була встановлена ​​стара версія клієнта, замінюємо на нову:

portmaster -o databases / postgresql90-client postgresql-client - \ *


Якщо клієнт раніше не був встановлений, то встановимо його в такий спосіб:

portmaster databases / postgresql90-client


Встановлюємо сервер PostgreSQL 9.0:


portmaster databases / portgresql90-server


Після завантаження та збірки з вихідного коду ми отримуємо готовий сервер PostgreSQL. Тепер потрібно подбати про створення кластера бази даних. Оскільки всю чорнову роботу зробив порт, ми можемо не дбати про створення необхідного користувача, а відразу перейти до ініціалізації бази.

По-перше, дозволяємо автоматичний запуск сервера в /etc/rc.conf:

postgresql_enable = "YES"


Всі необхідні команди і параметри ініціалізації, які описані в документації, будуть виконані при запуску:


/usr/local/etc/rc.d/postgresql initdb


На цьому кроці можуть чекати проблема з кодуваннями. Якщо це все-таки сталося, необхідно перечитати передмови і перейти до використання UTF-8.


По завершенні процедури ініціалізації база даних буде достною за адресою:


/usr/local/pgsql/data/. 


Запускаємо сервіс:


service postgresql start


Сервіс буде запускатися автоматично при кожному запуску сервера.

На данний час сервер налаштований так, що можливі будь-які підключення з локальної машини без пароля. Необхідно обмежити доступ до сервера без пароля.


Існує два способи керувати базами даних і користувачами PosgreSQL: 

  •  утиліти командного рядка (createuser, createdb, dropuser, dropdb і ін.) 
  •  інтерактивний термінал.

Необхідно скористатись інтерактивним терміналом psql для налащтування прав доступу. Першу команду слід виконувати від root, тому що в цьому випадку не буде потрібно пароль для користувача pgsql:

# su pgsql
$psql -U pgsql template1


Буде отримано відповідь:

psql (9.0.0)
Type "help" for help.
template1=#


Тут можна ознайомитися з наданими можливостями за допомогою команд \ h і \ ?. Для прикладу, створіть користувача test і базу даних test до якої він матиме доступ.


template1=# create user test;
CREATE ROLE
template1=# \du
                       List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 pgsql     | Superuser, Create role, Create DB | {}
 test      |                                   | {}


Слід зауважити, що команда повинна завершуватися символом ";". Якщо символ відсутній, то оболонка очікує продовження команди. Якщо ви раптом забули встановити ";" після команди, можливо зробити це в наступному рядку. Після виконання команди завжди видається відповідь, як в прикладі вище "CREATE ROLE".

В результаті виведення команди \ du у нас є 2 користувача PostgreSQL: pgsql - володіє правами на налаштування сервера, створення користувачів і баз даних, і наш новий користувач test з обмеженими правами. Ми можемо змінити права доступу користувача в такий спосіб:


template1=# alter user test superuser createrole createdb;
ALTER ROLE
template1=# \du
                       List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 pgsql     | Superuser, Create role, Create DB | {}
 test      | Superuser, Create role, Create DB | {}


По можливості необхідно уникати роздачі таких високих прав доступу. Як правило, немає сенсу давати такі права для звичайного користувача. Повернемо нашому користувачеві test початкові права:


template1=# alter user test nosuperuser nocreaterole nocreatedb;
ALTER ROLE
template1=# \du
                       List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 pgsql     | Superuser, Create role, Create DB | {}
 test      |                                   | {}


Обмежимо доступ паролями:


template1=#\password test
Enter new password: 
Enter it again:


Процедура створення пароля стандартна – необхідно двічі ввести пароль для користувача. Аналогічним чином необхідно захистите суперкористувача (щоб мати можливість керувати сервером).

Необхідно включити перевірку пароля при підключенні до сервера. За це відповідає файл /usr/local/pgsql/data/pg_hba.conf:


# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust


Існує 3 записи для локальних підключень. Всі записи вказують на відсутність перевірки пароля - "trust". Необхідно змінити це значення на "md5":


# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5


Перезапуск сервер, для застосування налаштувань:


service postgresql restart


Спробуйте підключитися до інтерактивної оболонки. Як бачите, тепер нам пропонують ввести пароль для нашого користувача:

$ psql -U pgsql template1
Password: 
psql (9.0.0)
Type "help" for help.
template1=#


Створимо базу для нашого користувача і зробимо його власником бази:

template1=# create database test;
CREATE DATABASE
template1=# alter database test owner to test;
ALTER DATABASE


Для роботи з базою даних існують наступні графічні програми:

phpPgAdmin – створена на PHP, тобто зручна в тих випадках, коли з базою працює веб-додаток. Для роботи потрібно будь-який веб-сервер з підтримкою PHP.

pgAdmin – кроссплатформне додаток, написане на C ++. Підтримує безліч платформ: FreeBSD, Linux, Mac OS, Windows. Користувачі FreeBSD можуть встановити додаток з портів: / usr / ports / databases / pgadmin3 /.




Задати питання
Зворотній зв'язок