Установка postgreSQL из исходников в freeBSD
Я буду ставить postgreSQL из исходников по этому для начала нужно скачать сам архив, идем на сайт и качаем нужный Вам, я скачаю самый последний на момент написание статьи — версию 9.3.3:
# cd /usr/local/src/ # wget http://ftp.postgresql.org/pub/ source/v9.3.3/postgresql-9.3.3.tar.gz # tar zxvf postgresql-9.3.3.tar.gz # cd postgresql-9.3.3 # ./configure # make && make install && make clean
Создадим юзера postgres, пароль у меня такой же будет:
# adduser postgres # mkdir /usr/local/pgsql/data # chown postgres /usr/local/pgsql/data # su postgres # /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data # /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & # /usr/local/pgsql/bin/createdb test # /usr/local/pgsql/bin/psql test
Устанавливаем класс postgres для юзера postgres:
# pw usermod postgres-L postgres
Отредактируем файл postgresql.conf:
# ee /usr/local/pgsql/data/postgresql.conf
listen_addresses = 'localhost' port = 5432
# /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile start
Создадим БД mgw для more.groupware:
# /usr/local/pgsql/bin/createdb -E <кодировка> mgw # /usr/local/pgsql/bin/createdb -E KOI8 mgw
Пр. (<кодировка> — WIN, KOI8 или др.)
Создадим юзера mgw который будет использовать БД mgw:
# /usr/local/pgsql/bin/createuser -A -D -P mgw
Добавим сервис в автозагрузку ( отредактируем /etc/rc.conf):
# ee /etc/rc.conf
[...] postgresql_enable="YES" postgresql_data="/usr/local/pgsql/data" postgresql_flags="-w -s -m fast" postgresql_initdb_flags="--locale=ru_RU.UTF-8 --encoding=utf-8 --lc-collate=C" postgresql_class="postgres" [...]
Можно написать скрипт для старта, остановки ( стопа) и перезапуска постгре, для этого в/etc/rc.d/ создадим файл:
# ee /usr/local/etc/rc.d/postgresql.sh
вставляем следующий текст:
#! /bin/sh # Установочный префикс (префикс для установки) prefix="/usr/local/pgsql" # Data directory PGDATA="/usr/local/pgsql/data" # Раскоментировать PGDATA, тот что внизу если вы скинете файл конфига postgresql.conf #в /home/postgres/db #PGDATA="/home/postgres/db" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # What to use to start up the postmaster (we do NOT use pg_ctl for this, # as it adds no value and can cause the postmaster to misrecognize a stale # lock file) DAEMON="$prefix/bin/postmaster" # What to use to shut down the postmaster PGCTL="$prefix/bin/pg_ctl" set -e # Only start if we can find the postmaster. # Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL start -D '$PGDATA'" fi # echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m smart -w" fi # echo "ok" ;; restart) echo -n "Stopping PostgreSQL: " if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m smart -w" fi echo -n "Starting PostgreSQL: " if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL start -D '$PGDATA'" fi # echo "ok" ;; reload) echo -n "Reload PostgreSQL: " if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" fi echo "ok" ;; status) if [ -x $PGCTL ]; then su - $PGUSER -c "$PGCTL status -D '$PGDATA'" fi ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 # exit 1 ;; esac #exit 0
Сменим права, для того чтобы можно запустить скрипт на выполнение, для этого выполним:
# chmod 755 /usr/local/etc/rc.d/postgresql.sh
Запустить скрипт можно так:
# /usr/local/etc/rc.d/postgresql.sh start
Посмотрим что все нормально работает для этого выполним:
# ps -aux | grep postgres
Установка postgreSQL из исходников в freeBSD завершена!
Сейчас приведу инструкцию по использованию:
Есть 2 способа управлятьБД и юзерами PosgreSQL -это утилитки коммандной строки (createuser, createdb, dropuser, dropdb и др.) и интерактивный терминал. Юзанем интерактивный терминал psql для настроек прав доступа. Первую команду следует выполнять от root, т.к. в этом случае нам не потребуется пароль для пользователя pgsql:
# su postgres $ psql -U pgsql template1
В качестве примера создам юзера test и БД test в которой он будет работать, для этого:
# create user test;
CREATE ROLE
# \du
Получим что то типа этого:
Я могу сменить права на юзера выполнив:
# alter user test superuser createrole createdb;
ALTER ROLE
# \du
А вернуть пользователю test права на изначальные права можно так:
# alter user test nosuperuser nocreaterole nocreatedb;
ALTER ROLE
# \du
Ограничивать доступы по паролям можно:
#\password test
Enter new password: (введите новый пароль)
Enter it again: (введите еще раз пароль)
Можно вкл что бы сервер делал проверку и запрашивал пароль при подключении к нему, для этого поправим файлик pg_hba.conf:
# ee /usr/local/pgsql/data/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD #Используйте "local" если Используете для Unix domain socket соединений только! local all all trust # IPv4 для local : host all all 127.0.0.1/32 trust # IPv6 для local: host all all ::1/128 trust
Как видно, изменяется 3 записи для «local» подключений. Все записи устанавливают отсутствие проверки пароля — «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
После чего ребутнем сервер.
Пытаемся законектится к интерактивной оболочке. Как видно нас просят ввести пасс для юзера template1:
$ psql -U pgsql template1
Password: ‘сюда вводим пороль для этого юзера’
psql (9.0.0)
Type «help» for help.
template1=#
Создаем БД для test и назначаем его владельцем test:
# create database test;
CREATE DATABASE
# alter database test owner to test;
ALTER DATABASE
Так же можно выполнить это все одной строчкой:
# create database test owner=test;
CREATE DATABASE
Поглядим какие БД мы имеем, выполнив :
# \l
Надеюсь что суть ясна. Получить документацию, можно выполнив команды «\h» и «\?». Посмотреть как пользоваться запросом можно следующим образом (для примера возьмём «drop user»):
# \h drop user
Command: DROP USER
Description: remove a database role
Syntax:
DROP USER [ IF EXISTS ] name [, …]
Графические средства для управления PostgreSQL
Существует пару способов использовать postgreSQL в графическом режиме:
1. Можно поставить и использовать PhpMyAdmin.
2. Можно поставить и использовать PgAdmin.
Позже я расскажу вам как их установить, как настроить и пользоваться ими.
Установка postgreSQL из исходников в freeBSD закончена, пользуйтесь. Надеюсь я нормаль пишу статейки, если есть какие то замечания, то напишите я исправлюсь.