FreeBSD postgresql quickstart

Совсем коротко теория.

  • sysrc мы не рассматриваем.
  • Тюнинг (см ниже) делается до создания баз. Чтобы не переделывать потом, если это не маленькая база для дома.
  • Перед запуском postgresql надо создать первоначальные базы данных. Это делается командой
    /usr/local/etc/rc.d/postgresql initdb

    Оно же выставит владельца директории с базами и исправит права доступа.

  • После этого запускается postgresql командой

    service postgresql start

  • Для работы с базами данных используется утилита psql
  • psql при запуске должен подключаться к какой-либо базе
  • При запуске initdb (/usr/local/etc/rc.d/postgresql initdb) оно создало 3 базы:
    1. postgres
    2. template0
    3. template1
  • Администратор баз данных должен быть непривилегированным пользователем
  • При установке postgresql-server оно создало непривилегированного пользователя pgsql
  • Если при запуске postgresql оно ругается на

    pg_ctl: could not read file "/usr/local/pgsql/data/postmaster.opts"

    , то запускать надо командой

    /usr/local/bin/postgres -D /usr/local/pgsql/data

Таким образом, на FreeBSD для установки postgresql и корректного входа в базу “postgres” достаточно выполнения следующего набора действий:

pkg install postgresql84-server
# выставить sysrc
mkdir -p -m 0777 /usr/local/pgsql/data
/usr/local/etc/rc.d/postgresql initdb
su pgsql
/usr/local/bin/postgres -D /usr/local/pgsql/data
psql -d postgres

Сидя в pgsql-е, создать базу my_base, пользователя для этой базы my_user и войти в my_base можно командами

CREATE DATABASE my_base;
CREATE USER my_user WITH PASSWORD 'my_password';
GRANT ALL PRIVILEGES ON DATABASE my_base TO my_user;
\c my_base

Войти из шелла в базу template1 как пользователь pgsql без выполнения su pgsql:

psql -d template1 -U pgsql

Созздать базу из шелла, а затем ее обрушить, но уже из postgresql

/usr/local/bin/createdb -U pgsql my_base
psql -d template1 -U pgsql
DROP DATABASE my_base;
\q

Небольшой тюнинг

  • Для PgSQL рекомедуется выставить следующие sysctl's:
    kern.ipc.semmni=256
    kern.ipc.semmns=512
    kern.ipc.semmnu=256

  • Датасет под базы рекомендуется ставить с 8-k блоками (UNIX-type share)
  • При установке PgSQL сервера рекомендуется ставить Contrib той же версии (пример):

    pkg install postgresql94-server-9.4.1
    pkg install postgresql94-contrib-9.4.1

    Contrib содержит расширение админ-пака.

  • Языки для PgSQL прописыаются в /etc/login.conf

    # This is for PostgreSQL
    postgres:\
        :lang=en_US.UTF-8:\
        :setenv=LC_COLLATE=C:\
        :tc=default:

    После изменения языка, надо обновить настройки баз:

    cap_mkdb /etc/login.conf

  • Выставляем sysrc (по многочисленным просьбам :-)))

    echo 'postgresql_enable="YES"' >> /etc/rc.conf
    sysrc postgresql_data="/mnt/postgres/data"
    sysrc postgresql_flags="-w -s -m fast"
    sysrc postgresql_class="postgres"
    sysrc postgresql_profiles=""

  • Только после этого инициализировать базу

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

  • Ставим пароль:

    /usr/local/bin/psql -U pgsql -d postgres
    ALTER USER pgsql WITH PASSWORD 'the password can be the same as the one of the UNIX user';
    \q

  • Настраиваем сеть для нашей базы:

    cat >> /mnt/postgres/data/pg_hba.conf
    # IPv4 LAN connections:
    host    all             all             192.168.1.0/24          md5
    vi /mnt/postgres/data/postgresql.conf
    listen_addresses = '*'

Теперь перезапускаем базу и тащимся от крутости

unix/mysql/pgsql.txt · Last modified: 2015/10/10 19:54 by rybario
About this template
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5