Меню Рубрики

Как установить postgresql на linux

Установка PostgreSQL в Ubuntu

Реляционные системы управления базами данных — это ключевой компонент многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения данных и организацию доступа к информации. PostgreSQL- это объектно-реляционная система управления базами данных, которая все больше и больше вытесняет MySQL и производственных серверов.

Её преимущество в множестве дополнительных функций и улучшений, таких как надежная передача данных и параллелизация без блокировок чтения. Вы можете использовать эту СУБД из различных языков программирования, а её синтаксис запросов PL/pgSQL очень похож на MySQL от Oracle. В этой статье мы рассмотрим как выполняется установка PostgreSQL в Ubuntu 20.04, а также как выполнить первоначальную настройку и подготовку к работе этой системы.

Установка Postgresql в Ubuntu 20.04

Это очень популярный сервер баз данных, потому программа есть в официальных репозиториях. Для установки оттуда выполните:

sudo apt install postgresql

А если вы хотите получить самую новую версию, то придется добавить в систему PPA. Для этого выполните команды:

sudo sh -c ‘echo «deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main» >> /etc/apt/sources.list.d/pgdg.list’
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O — | sudo apt-key add —

Затем обновите списки пакетов, чтобы получить самую новую доступную версию:

sudo apt-get update

Установка Postgresl Ubuntu из PPA или официальных репозиториев выглядит одинаково:

sudo apt install postgresql postgresql-contrib

Когда установка будет завершена, можно переходить к настройке.

Настройка Postgresql в Ubuntu

Вы знаете как установить Postgresql Ubuntu, но этого недостаточно для начала полноценной работы. Первым делом, откройте терминал и переключите его на пользователя postgres с помощью команды:

Эта учетная запись создается во время установки программы и на данный момент вы можете получить доступ к системе баз данных только с помощью нее. По умолчанию postgress использует концепцию ролей для аутентификации и авторизации.

Это очень похоже на учетные записи Unix, но программа не различает пользователей и групп, есть только роли. Сразу после установки Postgresql пытается связать свои роли с системными учетными записями, если для имени системной учетной записи существует роль, то пользователь может войти в консоль управления и выполнять позволенные ему действия. Таким образом, после переключения на пользователя postgres вы можете войти в консоль управления:

И посмотреть информацию о соединении:

Чтобы выйти наберите:

Теперь давайте рассмотрим как создать другие роли и базы данных.

Создание роли Postgresql

Вы уже можете полноценно работать с базой данных с помощью учетной записи postgres, но давайте создадим дополнительную роль. Учетная запись postgres является администратором, поэтому имеет доступ к функциям управления. Для создания пользователя выполните:

Скрипт задаст лишь два вопроса, имя новой роли и нужно ли делать ее суперпользователем.

Создание базы данных

Точно также как имена ролей сопоставляются с системными пользователями, имя базы данных будет подбираться по имени пользователя. Например, если мы создали пользователя segiy, то по умолчанию система попытается получить доступ к базе данных segiy. Мы можем ее очень просто создать:

Дальше, чтобы подключиться к этой базе данных нам нужно войти от имени одноименного пользователя:

Заходим в консоль и смотрим информацию о подключении:

Все верно сработало. Мы подключились с помощью роли segiy к базе segiy. Если нужно указать другую базу данных, вы можете сделать это с помощью опции -d, например:

Все сработало верно, при условии, что все компоненты были настроены как описано выше.

Создание таблиц

Теперь, когда вы знаете как подключится к базе данных Postgresql давайте рассмотрим как выполняются основные задачи. Сначала разберем создание таблиц для хранения некоторых данных. Для создания таблицы Postgresql используется такой синтаксис:

CREATE TABLE и мя таблицы (
имя_колонки1 тип_колонки ( длина ) ограничения ,
имя_колонки2 тип_колонки ( длина ),
имя_колонки3 тип_колонки ( длина )
);

Как видите, сначала мы задаем имя таблицы, затем описываем каждый столбец. Столбец должен иметь имя, тип и размер, также можно задать ограничения для данных, которые там будут содержаться. Например:

CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in (‘north’, ‘south’, ‘west’, ‘east’, ‘northeast’, ‘southeast’, ‘southwest’, ‘northwest’)),
install_date date
);

Мы создали таблицу детской площадки для описания оборудования, которое на ней есть. Сначала идет идентификатор equip_id, который имеет тип serial, это значит что его значение будет автоматически увеличиваться, ключ primary key значит, что значения должны быть уникальны.

Следующие колонки — обычные строки, для них мы задаем длину поля, они не могут быть пустыми (NOT NULL). Следующий столбец тоже строка, но она может содержать только одно из указанных значений, последний столбец — дата создания.

Вы можете вывести все таблицы, выполнив команду:

Здесь мы видим что кроме нашей таблицы, существует еще одна переменная — playground_equip_id_seq. В ней содержится последнее значение этого поля. Если нужно вывести только таблицы, выполните:

Вставка и удаление данных

У нас есть таблица, но пока что она пуста. Мы можем добавить в нее некоторые данные. Давайте добавим пункт, описывающий качели. Для этого используются такие команды:

INSERT INTO playground (type, color, location, install_date) VALUES (‘slide’, ‘blue’, ‘south’, ‘2016-04-28’);

INSERT INTO playground (type, color, location, install_date) VALUES (‘swing’, ‘yellow’, ‘northwest’, ‘2015-08-16’);

Заметьте, что имена столбцов не обязательно заключать в кавычки, а вот имена значений — обязательно. Теперь смотрим что получилось:

SELECT * FROM playground;

Удалять записи можно по любому критерию, например, удалим записи, поле type которых имеет значение slide:

DELETE FROM playground WHERE type = ‘slide’;

И снова смотрим что получилось:

SELECT * FROM playground;

Установка phppgadmin

Не всегда удобно управлять базой данных из терминала. Иногда нужно получить доступ ко всему через веб-интерфейс. Для этого есть программа phppgadmin, но для ее работы нужен веб-сервер Apache. Для установки программы наберите:

sudo apt install phppgadmin

Когда установка будет завершена откройте файл /etc/apache2/conf-available/phppgadmin.conf и закоментируйте строку:

А вместо нее добавьте:

Это необходимо, чтобы открыть доступ к этому адресу не только с локального компьютера, но и их других устройств сети. Заметьте, что вы не сможете войти под учетной записью postgres, это сделано из соображений безопасности. Когда завершите, перезагрузите Apahce:

sudo systemctl restart apache2

Выводы

Теперь установка Postgresql Ubuntu 16.04 завершена и вы даже прошли краткий экскурс в синтаксис PgSQL, который очень похож на привычный нам MySQL, но имеет некоторые отличия. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Установка и настройка сервера PostgreSQL под Linux Ubuntu

Тестировалось и работает на Ubuntu Linux (10.04 — 16.04 x86, x86_64) и PostgreSQL 8.4 — 9.4, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов.
Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):

Оговорюсь сразу, что статья написана под 8.4. У кого более поздние версии, вам придется немного подправить пути.

sudo apt-get install postgresql postgresql-client postgresql-contrib

Если Вы устанавливаете на локальный компьютер или на сервер, где установлены иксы, то для администрирования можно установить Pgadmin:

sudo apt-get install pgadmin3

Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):

sudo su postgres -c psql postgres

postgres=# ALTER USER postgres WITH PASSWORD ‘сюда_записываем_нужный_вам_пароль’;
postgres=# \q

Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’, замечу что пароли должны быть одинаковы:

sudo passwd -d postgres

Снимаем сроки паролей и меняем пароль, как я и говорил на идентичный, что писали в базу:

sudo su postgres -c passwd

Введите тот же пароль, который вы использовали в прошлый раз.
Теперь мы можем использовать и программу pgAdmin, и консольный клиент (от пользователя postgres), чтобы работать с сервером БД. Но, перед запуском pgAdmin, мы должны установить админский пакет PostgreSQL, который включит лучшее логгирование и мониторинг в pgAdmin. Запустите следующую команду:

sudo postgres -c psql /usr/share/postgresql/8.4/contrib/adminpack.sql *

Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать в консоли postgresql.conf:

sudo nano /etc/postgresql/8.4/main/postgresql.conf
listen_addresses = ‘localhost’

И снимаем комментарий с

Сохраните файл нажав Ctrl +X .
Последний шаг — мы должны определить, кто должен иметь доступ к серверу. Это настраивается с помощью файла pg_hba.conf file. (Этот шаг можно также сделать с помощью последних версий pgAdmin (1.6.x), плюс вам даже нет необходимости вычислять IP адреса и маски подсетей. Но это не исключает необходимости знать, как это работает.)

sudo nano /etc/postgresql/8.4/main/pg_hba.conf

Пример рабочего конфига:

# PostgreSQL Client Authentication Configuration File
# ===================================================
local all postgres ident sameuser

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# «local» is for Unix domain socket connections only
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5

# IPv6 local connections:
host all all ::1/128 md5

Всё, теперь перезапустите сервер:

sudo /etc/init.d/postgresql-8.4 restart

Установка словарей PostgreSQL для русского полнотекстового поиска.

Словари можно скачать отсюда http://wiki.services.openoffice.org/wiki/Dictionaries#Russian_.28Russia.29
Скачиваете файл Ru_ru.zip, разархивируете и закидываете к себе файлы ru_RU.dic и ru_RU.aff
Словари в кодировке koi8 для работы с postgresql надо преобразовать в utf-8
Для этого на хосте выполняете команду

iconv -f koi8-r -t utf-8 /usr/share/postgresql/8.4/tsearch_data/russian.affix
iconv -f koi8-r -t utf-8 /usr/share/postgresql/8.4/tsearch_data/russian.dict
iconv -f koi8-r -t utf-8 /usr/share/postgresql/8.4/tsearch_data/english.affix
iconv -f koi8-r -t utf-8 /usr/share/postgresql/8.4/tsearch_data/english.dict

Эта команда преобразовывает кодировку словарей, переименовывает их и копирует в нужную папку. Пути зависят от установки. Найдите у себя папку tsearch_data , которая содержит словари, ее и пропишите.

Теперь создаем полнотекстовую конфигурацию для работы с русским (ну и английским) Посылаете запросы к postgresql

CREATE TEXT SEARCH DICTIONARY russian_ispell (
TEMPLATE = ispell,
DictFile = russian,
AffFile = russian,
StopWords = russian
);
CREATE TEXT SEARCH CONFIGURATION ru ( COPY = russian );

CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);

CREATE TEXT SEARCH CONFIGURATION en ( COPY = russian );

ALTER TEXT SEARCH CONFIGURATION ru ALTER MAPPING FOR hword, hword_part, word WITH russian_ispell, russian_stem;
ALTER TEXT SEARCH CONFIGURATION ru ALTER MAPPING FOR asciihword, asciiword, hword_asciipart WITH english_ispell, english_stem;

Чтобы эта полнотекстовая конфигурация работала по умолчанию прописываете в postgresql.conf

default_text_search_config = ‘ru ‘

Ну или можете в каждой сессии посылать команду
SET default_text_search_config = ‘ru’;

select to_tsvector(‘ru’, ‘мама мыла раму’);
to_tsvector
————————————-
‘мама’:1 ‘мыло’:2 ‘мыть’:2 ‘рама’:3
(1 запись)

Полнотекстовая конфигурация работает.
Если вы хотите использовать данный сервер в связке apache2 + php5 + postgresql, то вам необходимо установить следующие пакеты:

sudo apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-gd php5-pgsql

Прошло немного времени и понадобился скриптик который будет делать бекапы баз. И так создаем каталог для бекапов:

Создаем скрипт с таким содержимым:

#!/bin/bash
logfile=»/home/backup/pgsql.log»
backup_dir=»/home/backup»
touch $logfile
databases=`psql -h localhost -U postgres -q -c «\l» | sed -n 4,/\eof/p | grep -$
echo «Starting backup of databases » >> $logfile
for i in $databases; do
dateinfo=`date ‘+%Y-%m-%d %H:%M:%S’`
timeslot=`date ‘+%Y%m%d%H%M’`
/usr/bin/vacuumdb -z -h localhost -U postgres $i >/dev/null 2>&1
/usr/bin/pg_dump -U postgres -i -F c -b $i -h 127.0.0.1 -f $backup_dir/$i-datab$
echo «Backup and Vacuum complete on $dateinfo for database: $i » >> $logfile
done
echo «Done backup of databases » >> $logfile
tail -15 /home/backup/pgsql.log | mailx admin@youdomain.ru

Вешаем на него права:

Запускать скрипт можно ручную, а кому лениво можно кроном, например каждый понедельник в 3 часа ночи:

00 3 * * 1 root /путь_до_скрипта/backup.sh

Дамп базы base1 в файл архива dump.tar.gz

pg_dump -h localhost -U base1 -F c -f dump.tar.gz base1

Загрузка архива дампа dump.tar.gz в базу vhsup

pg_restore -h localhost -U base1 -F c -d base1 dump.tar.gz
psql -d base1 -f /share/BackUPs/PostgreSQL/base1.sql

Если вам необходимо увеличить количество одновременных соединений к базе, то нужно переопределить лимиты ядра, при том что выставляемые лимиты на прямую зависят от объема памяти. Допустим у вас 16GB оперативной памяти, введем в терминале команду:

sysctl -w kernel.shmmax=17179869184
sysctl -w kernel.shmall=4194304
sysctl -w kernel.shmmax=8589934592
sysctl -w kernel.shmall=4194304

Настройки лучше сохранить в /etc/sysctl.conf для их применения после перезагрузки:

kernel.shmmax=17179869184
kernel.shmall=4194304

В древних дистрибутивах может не оказаться программы sysctl, тогда внесите изменения:

echo 17179869184 >/proc/sys/kernel/shmmax
echo 4194304 >/proc/sys/kernel/shmall

Для оптимизации PostgreSQL существует утилита pgtune. Её можно установить и собрать оптимальный файл конфигурации, и если он не противоричит вашим моральным принципам, можете им заменить ваш рабочий файл конфигурации.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как установить playonlinux на linux mint
  • Как установить photoshop на linux
  • Как установить opera на linux mint
  • Как установить opengl на linux mint
  • Как установить onedrive на linux mint