Установка PostgreSQL на облачный сервер CentOS
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 можно найти в следующих статьях:
- Использование ролей и управление доступом в PostgreSQL
- Репликация баз данных PostgreSQL по типу Master/Slave
- Управление таблицами PostgreSQL на облачном сервере