Установка будет проведена на примере 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 - интерактивный терминал 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 Пароль: