Установка и начальная настройка PostgreSQL

Установка

Установка пакетов

Установка будет проведена на примере mandriva 2006, postgresql входит в состав этого дистрибутива. В других дистрибутивах процесс установки может выглядеть по другому, может быть проведена установка из исходных кодов.

[root@localhost home]# urpmi postgresql

Для удовлетворения зависимостей будут установлены следующие 2 пакетов (4 МБ):

libpq4-8.0.3-2mdk.i586

postgresql-8.0.3-2mdk.i586

Это правильно? (y/n) y

Кроме небходимых библиотек и исполняемых файлов создаётся так же пользователь postgres от которого будет работат СУБД. Также потребуется процедурный языкpl/pgsql, который доставляется отдельно

[root@localhost home]# urpmi plpgsql

Для удовлетворения зависимостей будут установлены следующие 2 пакетов (9 МБ):

postgresql-plpgsql-8.0.3-2mdk.i586

postgresql-server-8.0.3-2mdk.i586

Это правильно? (y/n) y

Инициализация

Создадим каталог для БД, назначим ему нужные права, и сменим пользователя на postgres, так как от root нам работать с БД никто не позволит :-)

[root@localhost home]# mkdir /home/postgres

[root@localhost home]# mkdir /home/postgres/data

[root@localhost home]# chmod -r 700 postgres/

[root@localhost home]# chown -r postgres:postgres /home/postgres/

[root@localhost home]# su postgres

Создадим файлы, необходимые для функционирования СУБД.

bash-3.00$ initdb /home/postgres/data

Произведём запуск сервера. Это можно сделать как из пользователя postgres.

bash-3.00$ postmaster -d /home/postgres/data/

Так и от root, как и любую другую службу

[root@localhost home]# /etc/init.d/postgresql start

Теперь сервер postgresql стартовал и готов принимать запросы.

Начальная настройка

Создание пользователей и баз данных.

Прежде всего создадим БД test_db, с которой будем работать

bash-3.00$ createdb test_db

Создадим пользователя test_db с паролем test_db.

bash-3.00$ createuser -p test_db_user

Введите пароль для нового пользователя:

Введите снова:

Разрешить новому пользователю создавать базы данных? (y/n) y

Разрешить новому пользователю создавать пользователей? (y/n) y

create user

Добавим возможность использовать процедурный язык pl/pgsql в БД test_db

bash-3.00$ createlang plpgsql test_db

Интерактивный терминал psql

Запустим psql — интерактивный терминал postgresql от пользователя postgres для созданной БД test_db.

bash-3.00$ psql test_db

Добро пожаловать в psql 8.0.3 - Интерактивный Терминал postgresql.

Наберите:  \copyright для условий распространения

           \h для подсказки по sql командам

           \? для подсказки по командам psql

           \g или наберите ";" для завершения запроса и его выполнения

           \q для выхода

Информация по командам интерактивного режима можно получить по команде

test_db="#" \?

Подсказка по командам sql доступна следующим образом:

test_db="#" \h

Например для получения справки по команде назначения привелегий grant

test_db="#" \h grant

Команда:   grant

Описание:  определить привилегии доступа

Синтаксис:

grant { { select | insert | update | delete | rule | references | trigger }

    [,...] | all [ privileges ] }

    on [ table ] tablename [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

grant { { create | temporary | temp } [,...] | all [ privileges ] }

    on database dbname [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

grant { execute | all [ privileges ] }

    on function funcname ([type, ...]) [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

grant { usage | all [ privileges ] }

    on language langname [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

grant { { create | usage } [,...] | all [ privileges ] }

    on schema schemaname [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

grant { create | all [ privileges ] }

    on tablespace tablespacename [, ...]

    to { username | group groupname | public } [, ...] [ with grant option ]

Назначение привилегий.

Назначим пользователю test_db_user все привилегии на БД test_db

test_db="#" grant all privileges on database test_db to test_db_user with grant
option;

Всё. Теперь можно заходить от пользователя test_db_user и работать в БД test_db.

bash-3.00$ psql -u test_db_user -d test_db -w

Пароль:

Подведём итог:

  1. устанавливаем postgresql;
  2. устанавливаем plpgsql;
  3. создаём каталог для файлов СУБД;
  4. инициализируем СУБД;
  5. создаём базу данных;
  6. создаём пользователя;
  7. добавляем возможность использовать процедурный язык pl/pgsql;
  8. назначаем привилегии для пользователя.

Добавить комментарий