Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретические основы реляционных баз данных. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
936 Кб
Скачать

- 145 -

устанавливать более раннюю версию, то можно установить последнюю следующей командой:

# zypper in postgresql-server Loading repository data...

Reading installed packages...

Resolving package dependencies...

The following 3 recommended packages were automatically selected:

postgresql12 postgresql12-llvmjit postgresql12-server The following 6 NEW packages are going to be installed:

postgresql postgresql12 postgresql12-llvmjit postgresql12-server postgresql-llvmjit postgresql-server

6 new packages to install.

Overall download size: 15.0 MiB. Already cached: 0 B. After the operation, additional 47.1 MiB will be used.

Continue? [y/n/v/...? shows all options] (y): y

После подтверждения установки (ввода y в ответ на предложение установить программное обеспечение) не более чем через минуту сервер базы данных будет установлен.

Теперь мы можем увидеть, что появился ранее не существовавший пользователь postgres, который является администратором сервера только что установленной СУБД:

# cat /etc/passwd | grep postgres postgres:x:26:26:PostgreSQL

Server:/var/lib/pgsql:/bin/bash

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

# ls /var/lib/pgsql/

.bash_profile

Для этого надо инициализировать PostgreSQL командой

initdb -D /var/lib/pgsql/data

После ее выполнения будет создан каталог /var/lib/pgsql/data, в котором будут созданы служебные файлы PostgreSQL.

4.2. Запуск и останов сервера PostgreSQL

Теперь можно запускать сервер PostgreSQL от имени пользователя postgres следующим образом:

user@localhost:~> su Password: *********

# su postgres

$ pg_ctl start -D /var/lib/pgsql/data/ -l /var/lib/pgsql/log

- 146 -

Вводить каждый раз расположение кластера базы данных с помощью параметра -D не очень удобно, поэтому лучше использовать переменную окружения PGDATA:

$ export PGDATA=/var/lib/pgsql/data $ pg_ctl start

Теперь можно проверять состояние сервера PostgreSQL, останавливать его и снова запускать (часть вывода не приводится):

$ pg_ctl status

pg_ctl: server is running (PID: 3113) /usr/lib/postgresql12/bin/postgres

$ pg_ctl stop

waiting for server to shut down.... done server stopped

$ pg_ctl start server started

4.2.1. Утилита psql

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

Теперь можно начать сессию работы с базой данных от имени пользователя Postgres. Мы получим в результате сообщение о том, что пользователь - владелец базы данных соединился с сервером PostgreSQL.

> psql psql (12.6)

Type "help" for help.

postgres=#

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

\?

В результате на экран будет выведен полный список метакоманд, разделенных на группы:

-общие метакоманды;

-метакоманды подсказки;

-метакоманды работы с буфером запросов;

-метакоманды ввода-вывода;

-147 -

-метакоманды, реализующие условное выполнение блоков операторов;

-метакоманды, позволяющие получить информацию о базе данных;

-метакоманды форматирования;

-метакоманды для соединения с другими базами данных;

-метакоманды для взаимодействия с операционной системой;

-метакоманды для работы с внешними переменными;

-метакоманды для работы с большими объектами.

Важно запомнить, что выйти из режима подсказки можно нажатием клавиши q.

Мы можем посмотреть список всех баз данных для конкретного экземпляра PostgreSQL командой, часть вывода которой приведена ниже.

postgres=# \l

 

 

 

 

List of databases

 

Name

| Owner

| Encoding |

Collate

-----------

+----------

+----------

+-------------

 

postgres

| postgres

| UTF8

| en_US.UTF-8

template0

| postgres

| UTF8

| en_US.UTF-8

template1 | postgres

| UTF8

| en_US.UTF-8

(3 rows)

 

 

 

 

Как видно, первоначально мы имеем 3 базы данных — системная база данных (словарь базы данных) и два шаблона, на основе которых можно создавать новые базы данных (их использовать необязательно).

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

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

CREATE DATABASE name

 

[ [ WITH

] [ OWNER [=] user_name ]

[

TEMPLATE [=] template

]

[

ENCODING [=] encoding

]

[

LC_COLLATE [=] lc_collate ]

[

LC_CTYPE [=] lc_ctype

]

[

TABLESPACE [=] tablespace_name ]

[

ALLOW_CONNECTIONS [=]

allowconn ]

[

CONNECTION LIMIT [=] connlimit ]

[

IS_TEMPLATE [=] istemplate ] ]

Как видно, единственным обязательным значением является имя новой базы данных. Остальные параметры позволяют задать имя владельца базы данных, шаблон, на базе которого создается база

- 148 -

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

Для учебной работы достаточно указать имя базы данных и ее владельца. Если владельца не указать, то по умолчанию им станет суперпользователь PostgreSQL postgres. Попытка сделать владельцем незарегистрированного пользователя приведет к ошибке.

postgres=# CREATE DATABASE university OWNER rector; ERROR: role "rector" does not exist

postgres=# CREATE DATABASE university;

CREATE DATABASE

 

 

postgres=# \l

 

 

 

List of databases

Name

| Owner

|

Encoding

------------

+----------

+

----------

postgres

| postgres |

UTF8

template0

| postgres |

UTF8

template1

| postgres |

UTF8

university

| postgres |

UTF8

(4 rows)

 

 

 

Создав нового пользователя rector, мы можем создать новую базу данных, для которой он будет владельцем:

postgres=# CREATE ROLE rector LOGIN; CREATE ROLE

postgres=# CREATE DATABASE university OWNER rector; postgres=# \l

 

List of databases

Name

| Owner

|

Encoding

------------

+----------

+

----------

postgres

| postgres |

UTF8

template0

| postgres |

UTF8

template1

| postgres |

UTF8

university

| rector

|

UTF8

(4 rows)

 

 

 

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

user@localhost:~> psql -U rector -d university psql (12.6)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]