Установка, настройка и использование PostgreSQL на Ubuntu

Пользователи (роли)

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

В зависимости от настройки, роль можно рассматривать как пользователя базы данных или как группу пользователей. Роли могут владеть объектами базы данных (например, таблицами) и выдавать другим ролям разрешения на доступ к этим объектам. Также можно предоставить одной роли членство в другой роли (схоже с добавлением пользователя в группу), чтобы одна роль могла использовать привилегии другой роли.

Как отмечалось выше, во время установки была автоматически создана роль postgres. Вы можете работать с СУБД из-под нее. Для этого переключитесь на сессию данного пользователя:

sudo su - postgres

После чего запустите консоль Postgres:

psql

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

postgres=# \q

Так как для каждой созданной роли Postgres предполагает наличие базы данных с таким же именем и по умолчанию подключается именно к ней, имеет смысл создавать новую роль для каждой базы. Кроме того, если имя роли совпадает с именем пользователя, созданного в системе Linux, подключение к БД также упрощается.

Создание новой роли

Создать роль из консоли системы (не psql) можно с помощью команды:

createuser -P --interactive

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

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

Создать роль из консоли Postgres можно с помощью команды CREATE ROLE.

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

\h CREATE ROLE

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

CREATE ROLE имя_роли WITH LOGIN CREATEDB CREATEROLE;

Далее задайте новому пользователю пароль:

\password имя_роли

Просмотр существующих ролей

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

psql

И выполните команду:

\du

Пример вывода:

                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 tmweb     | Create role, Create DB                                     | {}
 tweb      | Create role, Create DB                                     | {}

Нажмите q, чтобы закрыть вывод, и \q, если нужно выйти из консоли Postgres.

dropuser имя_роли

Либо команду в консоли Postgres:

DROP ROLE имя_роли;

Смена пароля пользователя

Для смены пароля одной из ролей подключитесь к Postgres от суперпользователя (postgres или другой роли с такими привилегиями), после чего выполните:

ALTER USER имя_роли WITH PASSWORD 'новый_пароль';

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

Как правило, файл размещается в директории . Проверить его расположение можно в терминале системы с помощью: 

grep postgres /etc/passwd | cut -d ':' -f 6

Откройте файл, указав корректный путь к нему:

sudo nano /var/lib/postgresql/.psql_history

Удалите запись с паролем и сохраните изменения.

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

PostgreSQL доступен в репозиториях Ubuntu по умолчанию. Просто используйте команду apt для установки PostgreSQL. Наиболее распространенными установленными пакетами являются PostgreSQL server, client, pgadmin, а также библиотеки.

Для установки конкретной версии вы можете использовать PostgreSQL Apt repository.

Чтобы установка PostgreSQL Ubuntu прошла гладко, выполните следующие действия.

Во-первых, убедитесь, что ваша система находится в актуальном состоянии, выполнив следующую команду.

Установите пакет Postgres, а затем пакет — contrib, он добавит дополнительные утилиты и функциональные возможности.

После завершения установки PostgreSQL запустите службу PostgreSQL. Это можно сделать командой которая написана ниже.

Также включите автоматический запуск службы PostgreSQL при загрузке системы. Делается это командой.

Запуск и включение службы postgres

После установки вы можете проверить состояние PostgreSQL, выполнив следующую команду.


Статус службы Postgres

По умолчанию пользователь Postgres создается во время установки. Чтобы получить доступ к оболочке Postgres, сначала переключитесь на пользователя Postgres.

Теперь введите команду psql,


Выполнение команд в оболочке Postgres

Для проверки версии PostgreSQL выполните следующую команду:

или

Создание роли в PostgreSQL

Для авторизации и аутентификации Postgres использует понятие “роли”. Которое в некоторых отношениях похоже на учетные записи Unix. Во время установки Postgres настраивается таким образом, чтобы использовать аутентификацию ident. Идентификация Ident связывает роль Postgres с соответствующими системными учетными записями Linux / Unix. Только суперпользователи и  юзеры с ролью «CREATEROLE” отвечают за создание новых ролей.

Чтобы создать новую роль например с именем john, введите следующую команду в оболочке PostgreSQL.

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

Для создания новой базы данных требуется программа PostgreSQL database shell (psql). Войдите в оболочку psql и введите следующую команду, чтобы создать пользователя и установить пароль. Здесь я собираюсь создать имя пользователя jacky с паролем mystrongpassword. Вы можете создать свой собственный.

Создайте базу данных (например, gallary), используя следующую команду,

Предоставьте доступ к БД которую только что создали.. Здесь я собираюсь предоставить все права на базу данных gallery, чтобы пользователь jacky мог в ней работать.

Чтобы выйти из оболочки PostgreSQL требуется ввести команду q и нажать enter.


Создание пользователя и базы данных

Включение удаленного доступа к PostgreSQL

По умолчанию PostgreSQL слушает на интерфейсе  127.0.0.1. Если вы хотите получить доступ к базе данных из другого места. Тогда вам требуется настроить PostgreSQL для прослушки различных сетевых интерфейсов. Чтобы настроить PostgreSQL для различных интерфейсов, откройте конфигурационный файл PostgreSQL с помощью nano или другим текстовым редактором. Я буду использовать редактор Vim.

В конфигурационном файле найдите запись listen_addresses, находится она  в «Connection Settings». Раскомментируйте строку и измените localhost на ‘*’. Это даст команду PostgreSQL прослушивать все сетевые интерфейсы для входящих подключений.


Включение удаленного подключения в postgres

Сохраните свою конфигурацию и перезапустите сервер PostgreSQL, чтобы изменения отразились в БД.

Теперь можно проверить прослушивает ли  PostgreSQL другой интерфейс. Для этого выполните следующую команду.


Состояние прослушивания порта Postgres

Если вы включили брандмауэр UFW на сервере, тогда вам необходимо открыть порт 5432 для входящих TCP — соединений.  Чтоб сделать это выполните команду.

Также проверьте правило брандмауэра UFW, делается это командой.


Конфигурация Postgres ufw

Заключение

В этом руководстве вы узнали, как установить сервер PostgreSQL на Ubuntu 20.04. Кроме того, вы также узнали, как привязать PostgreSQL к различным сетевым интерфейсам, чтобы принимать соединения от удаленного клиента.

Step 5 — Opening a Postgres Prompt with the New Role

To log in with based authentication, you’ll need a Linux user with the same name as your Postgres role and database.

If you don’t have a matching Linux user available, you can create one with the command. You will have to do this from your non-root account with privileges (meaning, not logged in as the postgres user):

Once this new account is available, you can either switch over and connect to the database by typing:

Or, you can do this inline:

This command will log you in automatically, assuming that all of the components have been properly configured.

If you want your user to connect to a different database, you can do so by specifying the database like this:

Once logged in, you can get check your current connection information by typing:

This is useful if you are connecting to non-default databases or with non-default users.

How To Update Data in a Table

We know how to add records to a table and how to delete them, but we haven’t covered how to modify existing entries yet.

You can update the values of an existing entry by querying for the record you want and setting the column to the value you wish to use. We can query for the “swing” record (this will match every swing in our table) and change its color to “red”. This could be useful if we gave it a paint job:

<pre>
UPDATE playground SET color = ‘red’ WHERE type = ‘swing’;
</pre>

We can verify that the operation was successful by querying our data again:

equip_idtypecolorlocationinstall_date
2swingrednorthwest2010-08-16

As you can see, our slide is now registered as being red.

Резервные копии (экспорт и импорт дампа)

При установке PostgreSQL на сервер устанавливаются утилиты и , с помощью которых вы сможете из консоли Linux создавать резервные копии базы данных (pg_dump) и восстанавливать данные из них ().

Создание резервной копии

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

pg_dump -h хост -U имя_роли -F формат_дампа -f путь_к_дампу имя_базы

Параметры:

  • – сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • – имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • – формат, в котором будет сохранен дамп; указывается буквами c, t или p: ‘с’ (custom – архив .tar.gz), ‘t’ (tar – архив .tar), ‘p’ (plain – текстовый файл без сжатия, как правило, .sql);
  • – путь сохранения для файла дампа и имя файла;
  • – имя базы данных, для которой создается резервная копия.

Например:

pg_dump -h localhost -U tmweb -F c -f /home/user/backups/dump.tar.gz tmweb

После выполнения команды будет запрошен пароль пользователя Postgres, указанного в команде (в примере – tmweb).

Восстановление из дампа

Импорт дампов, сохраненных в форматах .tar.gz и .tar, выполняется с помощью :

pg_restore -h хост -U имя_роли -F формат_дампа -d имя_базы путь_к_дампу

Параметры:

  • – сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • – имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • – формат, в котором был сохранен дамп; необходимо указать ‘с’ для архива .tar.gz и ‘t’ для архива .tar;
  • – имя базы данных, в которую импортируется дамп;
  • – путь к файлу дампа и имя файла.

Например:

pg_restore -h localhost -U tmweb -F c -d new_db /home/user/backups/dump.tar.gz

Для импорта дампов в формате .sql используется cat:

cat путь_к_дампу | psql -h хост -U имя_роли имя_базы

Параметры:

  • – путь к файлу дампа и имя файла;
  • – сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • – имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • – имя базы данных, в которую импортируется дамп.

Например:

cat /home/user/backups/dump.sql | psql -h localhost -U tmweb new_db

Шаг 6: работа с данными в таблице

Как добавить, запросить и удалить данные в таблице

Теперь нужно научиться выполнять различные действия в созданной таблице.

Допустим, в таблицу необходимо добавить два новых элемента – slide (горка) и swing (качели). Для этого нужно выбрать и назвать таблицу, куда будут добавлены данные (playground), обозначить нужные столбцы и написать данные для каждого столбца. Например, вот так:

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');

INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

Здесь нужно обратить на пару важных моментов. Во-первых, название столбцов нужно писать без кавычек, а вот сами значения обязательно брать в кавычки.

Во-вторых, не нужно вводить значение для столбца equip_id, т.к. оно автоматически генерируется в тех случаях, когда в таблице появляется новая запись.

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

SELECT * FROM playground;

Вы увидите:

equip_id | type  | color  | location  | install_date

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

 1 | slide | blue   | south  | 2014-04-28

 2 | swing | yellow | northwest | 2010-08-16

(2 rows)

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

Теперь о том, как удалить данные.

Для того, чтобы убрать строку, нужно добавить следующее (в данном случае для удаления элемента slide):

DELETE FROM playground WHERE type = 'slide';

Если еще раз посмотреть таблицу, то видно, что этого элемента больше нет:

SELECT * FROM playground;

Вывод:

 equip_id | type  | color  | location  | install_date

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

 2 | swing | yellow | northwest | 2010-08-16

(1 row)

Работа с шаблонами баз данных

При установке PostgreSQL по умолчанию создаются три базы данных: postgres, template0, template1.

Template0 и template1 – это шаблоны баз данных, из которых в дальнейшем будут создаваться пользовательские БД.

Фактически, когда вы выполняете команду CREATE DATABASE, Postgres создает клон базы template1. Если внести изменения в template1, они будут наследоваться всеми новыми создаваемыми базами. Это позволяет, например, добавить в template1 необходимые вам таблицы с данными или установить расширения, после чего не потребуется добавлять их для каждой новой базы.

Обратите внимание, что для установки расширений необходимо подключиться к template1 от суперпользователя (postgres или другой роли, имеющей данные привилегии). Подключитесь к шаблону template1:

Подключитесь к шаблону template1:

\c template1

И установите расширение:

CREATE EXTENSION название_расширения;

Например, если вы установите в template1 расширение pgcrypto, то в дальнейшем, при выполнении CREATE DATABASE, новые базы будут создаваться с уже установленным pgrypto.

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

Чтобы создать “чистую” базу на основе template0, нужно выполнить:

CREATE DATABASE имя_базы TEMPLATE template0;

Также template0 необходима, если вам нужно внести изменения в кодировку или локаль создаваемой базы данных. По умолчанию (при использовании template1) эти изменения невозможны.

В этом случае нужно при создании базы указать template0 в качестве шаблона и указать требуемую кодировку и/или локаль, например:

CREATE DATABASE имя_базы TEMPLATE template0 ENCODING 'SQL_ASCII';

Пересоздание template1

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

Сначала необходимо указать, что template1 не является шаблоном, чтобы удаление стало возможно:

UPDATE pg_database SET datistemplate = false WHERE datname = 'template1';

Далее удалить template1:

DROP DATABASE template1;

И создать базу template1 заново, указав, что она будет являться шаблоном:

CREATE DATABASE template1 OWNER postgres TEMPLATE template0 is_template true;

Создаем базу данных и пользователя

По умолчанию для локальных соединений PostgreSQL использует схему авторизации, которая называется “peer authentication” (можно перевести как «одноранговая авторизация»). Подобная схема позволяет провести авторизацию (без дальнейшей аутентификации) в случае, если имя пользователя ОС совпадает с именем действующего пользователя PostgreSQL.

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

Начните сессию в PostgreSQL, используя команду:

$ sudo -u postgres psql

Первым делом вам нужно создать базу данных для вашего проекта на Django. Из соображений безопасности будет лучше, если каждый проект будет иметь свою собственную изолированную базу данных. Название базы данных должно быть описательным и вам понятным, но в данном руководстве в качестве примера будет использоваться база под названием myproject:

postgres=# CREATE DATABASE myproject;

Примечание.
Все SQL-команды обязательно должны заканчиваться точкой с запятой.

Далее вам необходимо создать нового пользователя базы данных (myprojectuser) для того, чтобы подключиться к базе данных и взаимодействовать с ней. Обязательно установите длинный и сложный пароль:

postgres=# CREATE USER myprojectuser WITH PASSWORD 'password';

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

Установите UTF-8 в качестве кодировки по умолчанию (это необходимо для Django). Уровень изолированности транзакций нужно по умолчанию установить как “read committed” (чтение фиксированных данных) – этот уровень обеспечивает защиту от чернового чтения. Не забудьте про временную зону: изначально проекты на Django имеют установку UTC. Чтобы выполнить все изменения, нужно ввести следующие команды:

postgres=# ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE myprojectuser SET timezone TO 'UTC';

Теперь последнее, что необходимо сделать, это дать только что созданному пользователю права доступа к созданной базе:

postgres=# GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

Теперь выйдите из командной строки SQL, возвратившись к postgres сессии пользователя:

postgres=# \q

Администрирование конфигураций 1С (недокументированные особенности работы)

Многие мои коллеги по работе и по профессии, уверен, сталкиваются с аналогичными ситуациями, когда программа 1С при работе с конфигурацией, мягко говоря, работает “странно”. Как говорит один хороший знакомый (к слову, один из авторов УТ 11):
– “вот, ну согласись, нанять пару серьезных методистов – реальных дядечек с реального производства, до начала разработки – единственная ЭЛЕМЕНТАРНАЯ политика, как можно было этого не сделать???? там их НЕТ. Причем это 0 в плане затрат на разработку, там нет ограничений бюджета, это просто самый тупой прокол.”
В этой статье приведу способы лечения пресловутых проколов (за последний месяц).

Зачем использовать PostgreSQL?

PostgreSQL поставляется со многими функциями, направленными на то, чтобы помочь разработчикам создавать приложения, администраторам защищать целостность данных и создавать отказоустойчивые среды, а также помогать вам управлять своими данными независимо от того, насколько велик или мал набор данных. Подключение postgresql является выгодным. Помимо того , что PostgreSQL является свободным и открытым исходным кодом, он обладает высокой степенью расширения. Например, вы можете определять свои собственные типы данных, создать базу данных, даже написать код с разных языков программирования без перекомпиляции базы данных!

PostgreSQL пытается соответствовать стандарту SQL там, где такое соответствие не противоречит традиционным функциям или может привести к плохим архитектурным решениям. Многие функции, требуемые стандартом SQL, поддерживаются, хотя иногда и с немного отличающимся синтаксисом или функцией. По состоянию на выпуск версии 13 в сентябре 2020 года PostgreSQL соответствует по крайней мере 170 из 179 обязательных функций для соответствия ядру SQL:2016. На момент написания этой статьи ни одна реляционная база данных не соответствует этому стандарту в полном объеме.

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

тип данных

  • Примитивы: Целочисленные, Числовые, Строковые, Логические
  • Структурировано: Дата / Время, массив, диапазон, UUID
  • Документ: JSON/JSONB, XML, Key-value (Hstore)
  • Геометрия: Точка, Линия, Круг, Многоугольник
  • Настройки: Составные, Пользовательские

Типы целостность данных

  • УНИКАЛЬНЫЙ, А НЕ НУЛЕВОЙ
  • первичный ключ
  • внешний ключ
  • Ограничения Исключения
  • Явные Блокировки, Консультативные Блокировки
  • Параллелизм, Производительность
  • Индексация: B-дерево, Многоколоночное, выражения, частичное
  • Расширенная индексация: GiST, SP-Gist, KNN Gist, GIN, BRIN, охватывающие индексы, фильтры Bloom
  • Сложный планировщик запросов / оптимизатор, сканирование только индексов, многоколоночная статистика
  • Транзакции, вложенные транзакции (через точки сохранения)
  • Многоверсионный контроль параллелизма (MVCC)
  • Распараллеливание запросов чтения и построение индексов B-дерева
  • Разбиение таблицы на разделы
  • Все уровни изоляции транзакций, определенные в стандарте SQL, включая сериализуемые
  • Just-in-time (JIT) компиляция выражений
  • Надежность, Аварийное Восстановление
  • Ведение журнала с опережением записи (WAL)
  • Репликация: Асинхронная, Синхронная, Логическая
  • Point-in-time-recovery (PITR), active standbys
  • Табличная область
  • Безопасность
  • Аутентификация: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, сертификат и многое другое
  • Надежная система контроля доступа
  • Безопасность на уровне столбцов и строк
  • Многофакторная аутентификация с сертификатами и дополнительным методом
  • Растяжимость
  • Хранимые функции и процедуры
  • Процедурные языки: PL/PGSQL, Perl, Python (и многие другие)
  • Выражения путей SQL/JSON
  • Внешние оболочки данных: подключение к другим базам данных или потокам со стандартным интерфейсом SQL
  • Настраиваемый интерфейс хранения данных для таблиц
  • Многие расширения, предоставляющие дополнительные функциональные возможности, включая PostGIS
  • Интернационализация, Текстовый Поиск
  • Поддержка международных наборов символов, например, с помощью параметров сортировки ICU
  • Нечувствительные к регистру и акценту параметры сортировки
  • Полнотекстовый поиск

Есть еще много возможностей, которые вы можете обнаружить в документации PostgreSQL. Кроме того, PostgreSQL обладает высокой расширяемостью: многие функции, такие как индексы, имеют определенные API, так что вы можете создавать их с помощью PostgreSQL для решения ваших задач.

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

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

Параметры и конфигурационные файлы

Узнать расположение конфигурационного файла (как правило, размещается по пути: ) можно с помощью:

SHOW config_file;

Узнать значение какого-либо параметра Postgres:

SHOW параметр;

Получить расширенную информацию о параметре можно из представления : будет выведено не только установленное значение, но также файл, в котором он назначен, максимальные и минимальные значения.

SELECT * FROM pg_settings WHERE name = 'параметр';
 
# Например:
SELECT * FROM pg_settings WHERE name = 'max_connections';

Чтобы вывести информацию в удобном для восприятия формате, можно сменить представление командой \x:

Настройка PostgreSQL в Ubuntu 20.04

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Установка 1С:Предприятие на Ubuntu

Свою настройку сервера 1С на Linux начнём с установки 1С:Предприятие. Установочные пакеты можно загрузить с сайта https://releases.1c.ru. Для этого у вас должна быть активна учётная запись. В принципе, файлы можно скачать где-то в интернете и без неё, но так как сервер 1С нужно регулярно обновлять, без своей учётной записи будет неудобно. Загрузить нужно файл Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем.

Скопируйте файл на Ubuntu Server. Но перед тем, как начать установку 1С, выполним некоторые подготовительные действия в системе. Нам нужно установить шрифты mscorefonts.

sudo apt install ttf-mscorefonts-installer fontconfig

Во время установки шрифтов, идёт обращение к различным внешним серверам для загрузки файлов. Бывает так, что какое-то соединение отваливается по таймауту и не понятно, выполнилась ли установка шрифтов корректно. В этом случае установку mscorefonts можно перезапустить, чтобы получить гарантированно положительный результат:

sudo apt reinstall ttf-mscorefonts-installer

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

sudo fc-cache -f -v

Установим еще несколько пакетов, которые нам пригодятся в дальнейшем:

# sudo apt install imagemagick curl

Для корректной работы сервера 1С на Ubuntu необходимо настроить кодировку локали на ru_RU.UTF-8 UTF-8. Делается это с помощью утилиты dpkg-reconfigure.

# sudo dpkg-reconfigure locales

Её же указываем в качестве Default. Перезайдите в систему, чтобы применилась новая локаль. Проверить, применилась ли русская локаль, можно просто запустив Midnight Commander. Всё управление будет на русском языке.

Дальше будем устанавливать сам сервер 1С. Для этого распакуйте загруженный ранее пакет.

mkdir 1csrv && mv deb64_8_3_19_1264.tar.gz 1csrv && cd 1csrv
tar -xzvf deb64_8_3_19_1264.tar.gz

У вас должен быть стандартный набор пакетов:

Устанавливаем необходимые нам пакеты 1С сервера:

sudo dpkg -i 1c-enterprise-8.3.19.1264-common_8.3.19-1264_amd64.deb 1c-enterprise-8.3.19.1264-server_8.3.19-1264_amd64.deb 1c-enterprise-8.3.19.1264-ws_8.3.19-1264_amd64.deb

На момент моей установки, актуальная версия 1с была 8.3.19.1264. Не забудьте заменить её на свою. Копируем вручную конфиг для управления службой srv1cv83. Почему-то никто не удосужился написать юнит для systemd, что выглядит странно.

sudo ln -s /opt/1cv8/x86_64/8.3.19.1264/srv1cv83 /etc/init.d/srv1cv83
sudo systemctl daemon-reload

Запускаем сервер 1С и добавляем его в автозагрузку.

sudo systemctl start srv1cv83
sudo systemctl enable srv1cv83

Убедимся, что сервис успешно запущен:

sudo systemctl status srv1cv83

На всякий случай можно проверить, слушает ли служба tcp порты.

sudo apt install net-tools
sudo netstat -tulnp

На вид всё в порядке. Сервер 1С успешно установлен на Ubuntu, сконфигурирован и запущен. Готов принимать подключения от клиентов. Далее необходимо заняться настройкой firewall. Так как я не знаю, используете ли вы его и какой конкретно, то не буду давать команд на управление правилами или отключение. Эта тема выходит за рамки данной статьи. Если делаете тестовую установку, то firewall можно просто отключить.

Connect to Postgres with the New User

Let’s assume that you have a Linux system account called (you can create one by typing: ), and that you have created a Postgres role and database also called .

You can change to the Linux system account by typing:

<pre>
sudo -i -u <span class=“highlight”>test1</span>
</pre>

You can then connect to the database as the Postgres role by typing:

This will log in automatically assuming that all of the components have been configured.

If you want your user to connect to a different database, you can do so by specifying the database like this:

<pre>
psql -d <span class=“highlight”>postgres</span>
</pre>

You can get information about the Postgres user you’re logged in as and the database you’re currently connected to by typing:

This can help remind you of your current settings if you are connecting to non-default databases or with non-default users.

Шаг 2 — Использование ролей и баз данных в PostgreSQL

По умолчанию Postgres использует концепцию “ролей” для выполнения аутентификации и авторизации. В некоторых аспектах они напоминают обычные учетные записи в Unix, однако Postgres не делает различий между пользователями и группами и предпочитает использовать более гибкий термин “роль”.

После установки Postgres настроена на использование аутентификации ident, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.

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

Существует несколько способов использования этой учетной записи для доступа к Postgres.

Переключение на учетную запись postgres

Вы можете переключиться на учетную запись postgres на вашем сервере с помощью следующей команды:

Теперь вы можете немедленно получить доступ к командной строке Postgres с помощью следующей команды:

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

Закройте командную строку PostgreSQL с помощью следующей команды:

В результате вы вернетесь в командную строку в Linux.

Доступ к командной строке Postgres без переключения учетных записей

Также вы можете запустить необходимую вам команду с учетной записью напрямую с помощью sudo.

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

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

Вы снова сможете выйти из интерактивной сессии Postgres с помощью следующей команды:

Многие варианты использования требуют использования сразу нескольких ролей Postgres. Ниже вы узнаете, как выполнить настройку в таких случаях.

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий