Установка PostgreSQL на облачный сервер CentOS

PostgreSQL – это популярная открытая СУБД, основанная на языке запросов SQL.

Данное руководство поможет установить PostgreSQL на сервер CentOS.

Установка PostgreSQL

В официальных репозиториях CentOS можно найти пакеты PostgreSQL, однако лучше загрузить PostgreSQL с сайта проекта, поскольку доступные в репозитории пакеты, как правило, устаревшие.

Отключение обновления пакетов PostgreSQL для CentOS

Сначала нужно исключить пакеты PostgreSQL из обновления.

Откройте конфигурационный файл репозиториев CentOS:

nano /etc/yum.repos.d/CentOS-Base.repo

В конце файла найдите раздел [base] и добавьте строку, которая исключит пакеты postgres:

[base] name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*

Затем добавьте эту же строку в раздел [updates], чтобы отключить автоматическое обновление пакетов из официальных репозиториев системы при помощи пакетного менеджера yum.

[updates] name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*

Добавление репозиториев PostgreSQL

Теперь yum не будет обновлять пакеты PostgreSQL из официальных репозиториев системы. Нужно предоставить системе альтернативный репозиторий; используйте пакеты с сайта проекта.

Откройте сайт и найдите последнюю версию программы для CentOS. Кликните правой кнопкой мыши по подходящей ссылке и скопируйте её.

Вернитесь в сессию сервера и откройте домашний каталог. Нажмите curl –O и вставьте полученную ссылку:

cd ~
curl -O http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

Установите загруженный пакет при помощи команды:

rpm -ivh pgdg*

Система загрузит пакет с сайта проекта.

Эти пакеты содержат нумерацию версий; запросите список пакетов СУБД, чтобы уточнить номер текущей версии:

yum list postgres*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.linux.duke.edu
* extras: mirror.linux.duke.edu
* updates: mirrors.kernel.org
Installed Packages
postgresql93.x86_64                  9.3.1-1PGDG.rhel6        @pgdg93
postgresql93-libs.x86_64             9.3.1-1PGDG.rhel6        @pgdg93
postgresql93-server.x86_64           9.3.1-1PGDG.rhel6        @pgdg93
Available Packages
postgresql93-contrib.x86_64          9.3.1-1PGDG.rhel6        pgdg93
postgresql93-debuginfo.x86_64        9.3.1-1PGDG.rhel6        pgdg93

Как видите, в данном случае используется версия 93. Теперь можно загрузить пакет сервера PostgreSQL.

yum install postgresql93-server

Примечание: Если вы используете другую версию PostgreSQL, замените 93 её номером.

Инициализация среды базы данных

Чтобы инициализировать среду базы данных, введите:

service postgresql-9.3 initdb

После этого можно настроить автозапуск PostgreSQL:

chkconfig postgresql-9.3 on
service postgresql-9.3 start

Система PostgreSQL готова к использованию.

Вход в базу данных PostgreSQL

По умолчанию PostgreSQL создаёт стандартного пользователя postgres и БД postgres.

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

Взаимодействие с PostgreSQL происходит при помощи интерфейса psql, который предоставляет командную строку.

Откройте сессию пользователя postgres:

su - postgres

Командная строка изменится. Теперь можно подключиться к БД, имя которой совпадает с именем пользователя:

psql

Командная строка снова изменится, а это значит, что теперь вы взаимодействуете со стандартной БД postgres.

Чтобы закрыть этот интерфейс, введите:

\q

Чтобы вернуться в сессию пользователя root:

exit

Полезные команды psql

  • \?: выводит полный список команд psql.
  • \h: справка по командам SQL; чтобы получить справку о какой-либо конкретной команде, просто используйте её в качестве префикса.
  • \q: закрывает консоль psql и возвращает в строку Linux.
  • \d: список доступных таблиц, видов.
  • \du: список доступных ролей.
  • \dp: список привилегий доступа.
  • \dt: список таблиц.
  • \l: список баз данных.
  • \c: подключение к базе данных; после команды нужно указать имя целевой БД.
  • \password: изменение пароля для текущего пользователя.
  • \conninfo: информация о текущей БД и подключении.

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

Для создания таблицы PostgreSQL использует следующий синтаксис:

CREATE TABLE new_table_name (
table_column_title TYPE_OF_DATA column_constraints,
next_column_title TYPE_OF_DATA column_constraints,
table_constraint
table_constraint
) INHERITS existing_table_to_inherit_from;

Попробуйте создать таблицу; в данном руководстве таблица условно называется popsicles.

CREATE TABLE popsicles (
pop_id serial PRIMARY KEY,
flavor varchar (50) NOT NULL,
amount int NOT NULL,
size varchar (10) check (size in ('small', 'normal', 'large'))
);

Чтобы просмотреть таблицу, используйте следующую команду:

\dt
List of relations
Schema |   Name    | Type  |  Owner
-------+-----------+-------+----------
public | popsicles | table | postgres
(1 row)

Чтобы просмотреть структуру столбцов и данных, введите:

\d popsicles
Table "public.popsicles"
Column |         Type          |                         Modifiers
-------+-----------------------+--------------------------------------------------
pop_id | integer               | not null default nextval('popsicles_pop_id_seq'::regclass)
flavor | character varying(50) | not null
amount | integer               | not null
size   | character varying(10) |
. . .

Добавление данных в таблицу PostgreSQL

Теперь в БД есть таблица, однако в самой таблице нет никаких данных. Для добавления данных в таблицу используется команда insert.

После команды INSERT INTO укажите имя таблицы, затем откройте круглые скобки и укажите через запятую имена столбцов. После этого нужно добавить оператор VALUES, открыть скобки и через запятую перечислить соответствующие значения.

INSERT INTO table_name (column1, column2, column3) VALUES ('value1', 'value2' , 'value3');

Добавьте в таблицу следующие данные:

INSERT INTO popsicles (flavor, amount, size) VALUES ('grape', 10, 'normal');
INSERT 0 1

Если на экране появилась строка INSERT 0 1, значит, команда выполнена успешно. Важно! Слова в списке значений нужно брать в кавычки, а числа – нет. Кроме того, все команды должны заканчиваться точкой с запятой (;).

Также следует отметить, что столбец pop_id заполняется автоматически, потому его не нужно упоминать в команде.

Добавьте в таблицу ещё немного данных:

INSERT INTO popsicles (flavor, amount, size) VALUES ('orange', 8, 'small');
INSERT INTO popsicles (flavor, amount, size) VALUES ('fudge', 20, 'large');
INSERT INTO popsicles (flavor, amount, size) VALUES ('eclair', 14, 'normal');
INSERT INTO popsicles (flavor, amount, size) VALUES ('rainbow', 4, 'small');

При создании таблицы столбец size был ограничен тремя значениями (small, normal и large). Что будет, если попробовать добавить в него другое значение?

INSERT INTO popsicles (flavor, amount, size) VALUES ('lime', 6, 'huge');
ERROR:  new row for relation "popsicles" violates check constraint "popsicles_size_check"
DETAIL:  Failing row contains (6, lime, 6, huge).

Как видите, система PostgreSQL вернёт ошибку, потому что не может использовать такое значение в этом столбце.

Запрос данных из таблицы

Запрашивать данные из таблицы PostgreSQL можно при помощи команды select, которая возвращает данные согласно указанным параметрам.

Чтобы запросить все данные в таблице, используйте символ звёздочки (*).

SELECT * FROM popsicles;

pop_id Flavor amount size
1 grape 10 normal
2 orange 8 small
3 fudge 20 large
4 eclair 14 normal
5 rainbow 4 small

(5 rows)

Чтобы выбрать данные определённого столбца, вместо символа звёздочки введите имя столбца:

SELECT flavor, amount FROM popsicles;

flavor amount
grape 10
orange 8
fudge 20
eclair 14
rainbow 4

(5 rows)

Также можно использовать условный оператор where, который позволяет задать критерии отбора:

SELECT * FROM popsicles WHERE amount <= 10;

pop_id flavor amount size
1 grape 10 normal
2 orange 8 small
5 rainbow 4 small

(3 rows)

Заключение

Система управления базами данных PostgreSQL установлена и полностью готова к работе.

Другие полезные инструкции по работе с PostgreSQL можно найти в следующих статьях:

Tags: ,

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