Настройка удаленного подключения к postgresql на windows server 2019

Построение запросов

psql превосходно подходит для построения небольших запросов, однако для многострочных и вложенных надо использовать более адекватный инструмент. Например, — она открывает последний запрос в вашем любимом редакторе, который может уже обеспечить и подсветку синтаксиса, и автодополнение, и прочие полезные вещи. Для выполнения достаточно сохранить этот псевдо-файл и выйти (ну прям как с git). удобно использовать для итеративного построения большого запроса.

В режиме такого редактирования можно также сохранить запрос в какой-нибудь отдельный файл на диске. Открыть же его можно с помощью команды . psql прочитает запрос из filename.sql и выполнит его.

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

и существенно упрощают работу над сложными sql запросами. Лично у меня открыто 2 окна side-by-side: один с vim, а другой с psql, где я выполняю только . Переключаюсь — правлю, переключаюсь — выполняю. Прошли те времена, когда я копипастил из java-приложений с помощью незнакомых сочетаний горячих клавиш.

Шаг 5 — Открытие командной строки Postgres с новой ролью

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

Если у вас нет соответствующего пользователя Linux, то вы можете создать его с помощью команды . Вы должны воспользоваться учетной записью без прав root с привилегиями (т. е. не выполняя вход в качестве пользователя postgres):

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

Либо же вы можете сделать следующее:

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

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

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

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

Как управлять пользователями PostgreSQL

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

Создать нового пользователя

Если несколько членов команды работают на разных уровнях в рамках проекта, вам нужно будет создать разные роли для разных сотрудников и назначить им доступ. Используйте команду CREATE USER, чтобы создать новый профиль пользователя:

В приведенной выше команде user1 – это имя пользователя, которое вы хотите для нового пользователя, за которым следует test123 , который является паролем для этого пользователя.

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

Как видно из выходных данных выше, для нового пользователя еще нет доступных привилегий.

Предоставление привилегий суперпользователя новым пользователям

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

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

Удалить пользователя из списка пользователей

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

Проверьте изменение, перечислив пользователей с помощью команды / du .

Удаление

И так, мы знаем что у пользователя Пётр Петров id равен 2, приступим:

Как видите, здесь для подстановки параметра в запрос мы использовали метод bindParam() им удобно пользоваться когда нам нужно подставить единичную переменную в запрос

Обратите внимание, что второй аргумент не может быть передан напрямую в виде значение (нельзя написать просто 2), мы должны передать именно переменную (которую по идеи нужно предварительно проверить и всё такое).. Как видите работать с PDO да и в целом с базами данных в PHP не так уж и сложно

Надеюсь статья была вам полезна. Желаю удачи!

Как видите работать с PDO да и в целом с базами данных в PHP не так уж и сложно. Надеюсь статья была вам полезна. Желаю удачи!

Установка

Установите PostgreSQL:

emerge -a dev-db/postgresql

Выполните базовую настройку PostgreSQL:

emerge —config postgresql

Configuring pkg...

 * You can modify the paths and options passed to initdb by editing:
 *     /etc/conf.d/postgresql-13
 * 
 * Information on options that can be passed to initdb are found at:
 *     http://www.postgresql.org/docs/13/static/creating-cluster.html
 *     http://www.postgresql.org/docs/13/static/app-initdb.html
 * 
 * PG_INITDB_OPTS is currently set to:
 *     --encoding=UTF8
 * 
 * Configuration files will be installed to:
 *     /etc/postgresql-13/
 * 
 * The database cluster will be created in:
 *     /var/lib/postgresql/13/data
 * 
 * Continuing initialization in 5 seconds (Control-C to cancel) ...
 ok
 * Creating the data directory ...
 * Initializing the database ...
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.

Кластер баз данных будет инициализирован со следующими параметрами локали:
  COLLATE:  ru_RU.utf8
  CTYPE:    ru_RU.utf8
  MESSAGES: ru_RU.utf8
  MONETARY: ru_RU.utf8
  NUMERIC:  C
  TIME:     ru_RU.utf8
Выбрана конфигурация текстового поиска по умолчанию "russian".

Контроль целостности страниц данных отключён.

исправление прав для существующего каталога /var/lib/postgresql/13/data... ок
создание подкаталогов... ок
выбирается значение max_connections... 100
выбирается значение shared_buffers... 128MB
выбор реализации динамической разделяемой памяти... posix
создание конфигурационных файлов... ок
выполняется подготовительный скрипт... ок
выполняется заключительная инициализация... ок
сохранение данных на диске... ок

ПРЕДУПРЕЖДЕНИЕ: используется проверка подлинности "trust" для локальных подключений.
Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A,
--auth-local или --auth-host при следующем выполнении initdb.

Готово. Теперь вы можете запустить сервер баз данных:

    /usr/lib64/postgresql-13/bin/pg_ctl -D /var/lib/postgresql/13/data -l файл_журнала start

 * The autovacuum function, which was in contrib, has been moved to the main
 * PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled
 * by default. You can disable it in the cluster's:
 *     /etc/postgresql-13/postgresql.conf
 * 
 * The PostgreSQL server, by default, will log events to:
 *     /var/lib/postgresql/13/data/postmaster.log
 * 
 * You should use the '/etc/init.d/postgresql-13' script to run PostgreSQL
 * instead of 'pg_ctl'.

В выводе указана вся основная информация.

Запустите PostgreSQL:

/etc/init.d/postgresql-13 start

postgresql-13 | * /run/postgresql: creating directory
postgresql-13 | * /run/postgresql: correcting owner
postgresql-13 | * Starting PostgreSQL 13 ...                                  ok 

Добавьте SQL-сервер в автозагрузку:

rc-update add postgresql-13

 * service postgresql-13 added to runlevel default

Зайти в БД

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

Воспользуйтесь командой

\c HeiHei_ru_DB

You are now connected to database «HeiHei_ru_DB» as user «postgres».

Если вы работаете в

Linux

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

psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME

Чтобы посмотреть список таблиц введите

\dt

List of relations
Schema | Name | Type | Owner
———+———+——-+———-
public | person | table | postgres
(1 row)

Чтобы посмотреть всю таблицу person уже можно использовать стандартный

SELECT * FROM person;

Установка

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

Сама установка делится на 2 пакета:

  • postgresql-server — сервер базы данных;
  • postgresql-contrib — дополнительные инструменты для работы с базами данных. Например для анализа или администрирования. Не входят в основной пакет, так как считается, что он нужен не всем. Пакет поддерживается теми же разработчиками, что и сервер. Устанавливать не обязательно, но рекомендуется.

С помощью репозитория CentOS

Установка пакетов выполняется следующей командой:

Следующая команда создаст системные базы данных, директории и системные таблицы:

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

Если этот шаг у вас завершился с ошибками, значит что не корректно была выполнена команда initdb. Ошибки могут быть следующими:

  • Failed to start postgresql.service: Unit postgresql.service not found;
  • Failed to enable unit: Unit file postgresql.service does not exist.

О том что сервис включен говорят следующие значения:

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

Вы можете получить следующую ошибку:

could not change directory to “/home/user”: Permission denied

Говорит о том, что пользователь ‘postgres’ (который был создан автоматически с сервером PostgreSQL) не имеет прав на указанный каталог для создания файла .psql_history. В рамках примера эта ошибка не критична и может не отображаться вовсе, если вы выполняете команду не из домашнего каталога. Если, в последующем, она у вас так же появится, нужно будет добавить права на исполнение (‘x’) этой директории.

Установка из репозитория PostgreSQL

Как можно увидеть в примере выше, то из репозитория CentOS была доступна только 10 версия PostgreSQL. Если добавить в вашу ОС ссылку на официальный репозиторий PostgreSQL, то, скорее всего, у нас станет доступна более новая версия. На момент написания статьи, самая последняя актуальная версия PostgreSQL — 12. Вы можете проверить последнюю версию на официальном сайте проекта.

Установим репозиторий:

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

Установим сервер базы данных и пакет приложений:

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

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

О том что демон включен и работает говорят следующие значения:

 

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

Установка 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 к различным сетевым интерфейсам, чтобы принимать соединения от удаленного клиента.

Кто уложил 1С, или мониторинг загрузки кластера в разрезе пользователей с помощью Grafana

Мониторингом различных параметров работы кластера 1С в zabbix сейчас уже никого не удивишь. Собственно потребление памяти, процов и места на серверах обычно настраивают первыми. Потом идет мониторинг в разрезе rphost’ов и различные метрики функционирования SQL сервера. Но вот когда уже все это есть, то временами возникает вопрос — какой же конкретно нехороший человек пытается съесть все (ну не все, но много) ресурсы сервера?

Можно смотреть в консоль кластера и ловить редиску там. Можно анализировать журнал регистраций, включать технологический журнал или накапливать статистку в специализированных базах 1С. Но, «настоящим» сисадминам проще как-то с внешними скриптами, базами данных и, например, Grafana. Расскажу что у нас получилось.

1 стартмани

48

Мета-команды PostgreSQL

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

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

Всем мета-командам предшествует обратная косая черта , за которой следует фактическая команда.

Список всех баз данных

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

Ввод этой мета-команды в оболочке Postgres выведет:

Это список всех имеющихся баз данных и служебная информация, такая как владелец базы данных, кодировка и права доступа.

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

  • postgres — это просто пустая база данных.
  • «template0» и «template1» — это служебные базы данных, которые служат шаблоном для создания новых баз.

Тебе пока не стоит беспокоиться о них. Если хочешь изучить все детали, то проверь официальную документацию.

Подключаемся к базе данных PostgreSQL

Некоторые команды SQL требуют, чтобы ты сначала вошел в базу данных (например, для создания новой таблицы).
Ты можешь выбрать, в какую базу данных входить, при запуске SQL Shell.

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

Полностью в терминале у тебя получится что-то такое:

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

Получить список всех таблиц в базе данных

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

Перед выполнением этой команды вам необходимо войти в базу данных.

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

Ты можешь увидеть имя таблицы и некоторую другую информацию, такую как схема (мы обсудим схемы в более сложных
руководствах) и владельца.

Владелец (owner) — это пользователь, который создал таблицу.

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

Список пользователей и ролей

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

Обрати внимание, что первый столбец называется — роль (role name).
И весь вывод на экран называется “список ролей” (List of roles), а не список пользователей. В PostgreSQL пользователи и роли практически
одинаковы

В PostgreSQL пользователи и роли практически
одинаковы.

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

Любая роль с атрибутом LOGIN может рассматриваться, как пользователь.

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

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

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

Create a PHP project structure with Composer

The Composer is a tool for managing dependency that allows you to declare the PHP library in a project and manage the update automatically.

We will use the Composer to set up the project structure of all the projects that we will be working on.

First, create the   folder in the webroot folder to store the project files.

Next, create the  folder and a new file in the   folder with the following content:

It means that every class that you create in the folder will map to the namespace.

Then, go to the window terminal, navigate to the   folder, and type the following command:

This command instructs the Composer to download the declared libraries in the file and generate an autoload file.

The command will also place all third-party libraries in the newly created folder. Because we didn’t declare any library in the file, it just generates the autoload file.

After that, create the  file in the   folder.

Finally, create two more files in the folder: and .

The project structure will look like the following picture:

Получение данных

Зачастую нам нужно поделиться данными из postgres с сотрудниками, руководством или клиентами, причём желательно в каком-нибудь удобочитаемом формате типа CSV или Excel. Вы уже подготовили запрос, свели всё в одну таблицу, осталось только куда-нибудь это выгрузить. Погуглив psql csv export, можно найти 2 способа. Первый более примитивный.

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

Правильным способом будет выгрузка в CSV с помощью мета-команды или SQL команды . выглядит это примерно так:

накладывает несколько ограничений. Во-первых, путь к файлу должен быть абсолютным. Во-вторых, вы можете писать только на локальную файловую систему. То есть подключиться к удалённой БД и выгрузить данные на локальный компьютер не получится. И тут на помощь приходит \copy, которая представляет из себя всего лишь более удобную оболочку для COPY. Запрос выше можно переписать так:

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

Единственное ограничение состоит в том, что команда должна быть одной строкой. Причина в том, что окончанием выражения для команды с \ является перевод строки, а не точка с запятой. Это не касается — там управление передаётся в редактор. Под капотом выполняет всё тот же COPY, перенаправляя вывод в STDOUT вместо файла. Далее psql забирает со STDOUT и записывает в локальный файл.
Если вам нужно выгрузить данные в Excel, то убедитесь, что задали правильную кодировку. Он не дружит с UTF-8, так что лучше откатиться до latin1 (2015 год на дворе, я солидарен с негодованиями автора):

Если sql-запрос у вас находится в файле, то использовать его для команды не получится. Вам придётся скопировать всё тело запроса в выражение в команде, удалив переносы строк.

Наверно, я вам уже надоел, так что закругляюсь. Напоследок хотелось бы ещё рассказать про утилиту psql2csv. Она позволяет запускать запрос из файла и получать отформатированный CSV в STDOUT (который можно потом перенаправить в файл):

В случае запроса из файла:

Параметры вызова утилиты совпадают с параметрами psql. Вы можете заменить вызов psql на psql2csv, передав запрос в качестве аргумента, а на выходе получить валидный CSV. Но это ещё не всё — почему бы не подать вывод на вход какой-нибудь другой утилите?!
psql2csv также принимает аргументы для совместимости с Excel.

Я уже очень привык работать с PostgreSQL через командную строку. Всё, что раньше делал в pgAdmin, можно делать и тут, причём быстрее. Я надеюсь, что эта статья убедила вас сделать psql основным инструментом для работы с PostgreSQL, показав удобство и гибкость.

Если у вас есть какие-то замечания или дополнения, пожалуйста, напишите!

Специальные схемы, временные объекты

К специальным схемам относят:

  • public – по умолчанию входит в путь поиска, если ничего не менять, все объекты будут в этой схеме.
  • Схема, одноимённая с пользователем – по умолчанию входит в search_path, но не существует. Если сделать, например схему postgres, то пользователь postgres будет по умолчанию работать с этой схемой.
  • pg_catalog – схема для объектов системного каталога. Если pg_catalog не прописан, то это схема будет там подразумеваться первой.

Временные таблицы – существуют на время сеанса или транзакции. Они не журналируются и не попадают в общую память. Чтобы реализовать временную таблицу в postgres применяет временные схемы.

Схема pg_temp_N – автоматически создается для временных таблиц. Такая схема тоже по умолчанию находится в search_path. По окончанию все объекты временной схемы удаляются, а сама схема остается. Оставшаяся временная схема может использоваться для новых временных таблиц, новой транзакции или сеанса.

Короткий экскурс в историю PostgreSQL

Генеалогическое древо PostgreSQL начинается в 1977 году в Калифорнийском университете Беркли. Реляционная база данных Ingres разрабатывалась в Беркли в 1977-85 годах. Ingres была очень популярна за пределами стен Калифорнийского университета, она появилась на многих компьютерах в университетских и исследовательских кругах. На свободный рынок Ingres была выведена Relational Technologies/Ingres Corporation, так она стала одной из первых коммерчески доступных реляционных систем управления базами данных. В наши дни Ingres превратилась в CA-INGRES II, продукт Computer Associates.

Тем временем в Беркли не прекращается работа над сервером реляционной базы данных (под названием Postgres), это продолжается с 1986 по 1994 год. Как и раньше, код приобретается коммерческой компанией и продукт на его основе выставляется на продажу. После поглощения компанией Informix он стал называться Illustra. Где-то в 1994 году в Postgres были добавлены возможности SQL, и возникло новое имя — Postgres95.

К 1996 году Postgres стала приобретать необыкновенную популярность, и было принято решение открыть ее код для некоторого количества программистов по списку рассылки, так началось весьма успешное сотрудничество добровольцев, направленное на продвижение Postgres. Тогда продукт в последний раз сменил имя, отбросив окончание «95» и заменив его на «SQL», которое лучше отражало поддержку стандартного языка запросов SQL в Postgres. Так родилась PostgreSQL.

GreatBridge осуществляет коммерческую поддержку проекта, а также предоставляет работу некоторым PostgreSQL-разработчикам.

Начальная настройка

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

$ initdb -D /var/lib/postgres/data

Где опция указывает на стандартное расположение данных кластера (если вы хотите использовать другой каталог, смотрите раздел ). принимает дополнительные аргументы:

Пример для русской локали:

$ initdb --locale=ru_RU.UTF-8 --encoding=UTF8 -D /var/lib/postgres/data --data-checksums

После инициализации на экране появится много строчек, некоторых из которых оканчиваются на :

Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.

Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".
Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8".
Выбрана конфигурация текстового поиска по умолчанию "russian".

Контроль целостности страниц данных отключён.

исправление прав для существующего каталога /var/lib/postgres/data... ок
создание подкаталогов... ок
выбирается реализация динамической разделяемой памяти... posix
выбирается значение max_connections по умолчанию... 100
выбирается значение shared_buffers по умолчанию... 128MB
выбирается часовой пояс по умолчанию... Europe/Moscow
создание конфигурационных файлов... ок
выполняется подготовительный скрипт... ок
выполняется заключительная инициализация... ок
сохранение данных на диске... ок

initdb: предупреждение: включение метода аутентификации "trust" для локальных подключений
Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A,
--auth-local или --auth-host при следующем выполнении initdb.

Готово. Теперь вы можете запустить сервер баз данных:

    pg_ctl -D /var/lib/postgres/data -l файл_журнала start

Если вы видите подобное, значит инициализация прошла успешно. Можно вернуться в обычного пользователя, выполнив команду в сеансе пользователя postgres.

Примечание: Подробнее об этом предупреждении читайте в разделе .

Совет: Если вы хотите использовать путь отличный от , нужно файл службы systemd

Если вы помещаете его в , не забудьте отключить .

Важно:

  • Если база данных располагается на файловой системе Btrfs, стоит отключить для каталога перед созданием любых баз данных.
  • Если база данных располагается на файловой системе ZFS, прочтите перед созданием любых баз данных.

Наконец, запустите и включите службу .

Основные функции PHP для работы с PostgreSQL

pg_connect – открывает соединение с базой данных, возвращает указатель соединения.

pg_query – выполняет запрос к базе данных, возвращает результат запроса.

pg_fetch_assoc – преобразовывает результат запроса в ассоциативный массив.

pg_close – закрывает соединение с базой данных.

Пример работы перечисленных функций

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $result = pg_fetch_assoc($result); 
        echo $result . '</br>' . $result;
        pg_close($dbconnect);
?>

Результат

В данном случае мы подключаемся к серверу, который расположен локально, по порту 5432, к базе testbase под пользователем admin с паролем 12345 и выполняем запрос (просто статические данные) к базе данных, затем мы преобразовываем результат в ассоциативный массив, выводим на экран и закрываем соединение.

pg_num_rows – возвращает количество строк в наборе данных, который вернул нам запрос.

pg_num_fields — возвращает количество полей в наборе данных, который вернул нам запрос.

pg_fetch_result – возвращает одно значение из результата запроса.

pg_fetch_row — преобразовывает результат запроса в массив.

Пример

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $NumRows = pg_num_rows($result); 
        $NumFields = pg_num_fields($result);  
        $field_1 = pg_fetch_result($result, 0, 0);  
        $result_array = pg_fetch_row($result);  
        echo 'Количество строк - '  . $NumRows . '</br>';
        echo 'Количество полей - '  . $NumFields . '</br>';
        echo 'Значение первого поля первой строки - ' .$field_1 . '</br>';
        echo 'Данные массива - ' . $result_array . '-' . $result_array;
        pg_close($dbconnect);
?>

Результат

pg_fetch_object – преобразовывает результат запроса в объект.

pg_field_name – возвращает название поля по его номеру.

pg_field_num – возвращает номер поля по его названию.

pg_version – возвращает сведения о протоколе взаимодействия, версии клиента и версии сервера в виде массива.

pg_escape_string – экранирует спецсимволы в строке.

pg_dbname – возвращает название базы данных.

pg_affected_rows – возвращает количество затронутых строк при update, insert и delete.

Пример

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $result_object = pg_fetch_object($result); 
        echo 'Значение свойства - ' . $result_object->field_1. '</br>'; 
        echo 'Название первого поля - ' . pg_field_name($result, 0). '</br>';
        echo 'Номер поля field_1 - ' . pg_field_num($result, 'field_1'). '</br>';
        echo 'Версия PostgreSQL - ' . pg_version($dbconnect) . '</br>';
        pg_close($dbconnect);   
?>

Результат

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

Нравится6Не нравится

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Вадлейд
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: