Как узнать версию postgresql linux

Обновлено: 08.07.2024

Предположим, у вас в postgres используется перечисление (enum) и вы забыли, какие значения этого перечисления допустимы. Выполните следующий запрос, поменяв имя перечисления на своё.

SELECT e.enumlabel
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
WHERE t.typname = 'your_enum'

23 июля 2012 г.

Работа с postgresql при помощи pgadmin

Альтернативой работе с базой данных через консоль является более интуитивно понятная среда любого клиента с графическим интерфейсом. Например, pgAdmin. Установить его очень просто, выполняем с правами суперпользователя:

Теперь можно запустить pgAdmin через графический интерфейс. Выбираем в списке локальный сервер БД (у него дефолтный порт 5432) и добавляем уже созданную нами БД с теми параметрами, которые мы задали.

pgAdmin

В это локальном сервере помимо узла Databases можно найти также узел под названием Login Roles - все доступные роли.

Выберем из всех доступных баз данных ту, которую мы создали при установке postgresql. В базе данных содержится множество различных типов объектов. Среди особое внимание следует уделить таблицам и последовательностям (sequences).

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

После того, как последовательность создана, приступим к созданию таблицы. Также указываем её имя и владельца (owner). На четвёртой вкладке Columns добавляем прежде всего первичный ключ. Кнопка Add, в появившемся окне указываем название столбца, например, id. В качестве типа данных выбираем bigint. На второй вкладке Definition в поле Default Value указываем нашу последовательность. В поле должно быть значение вида nextval('message_id_seq'::regclass). То есть каждый раз при добавлении новой строки из последовательности будет браться следующее значение. Добавили другие столбцы по необходимости. Наконец, на вкладке Constraints добавим ограничение на первичный ключ (Primary Key). На последней вкладке можем полюбоваться на результирующий SQL код, который сгенерировал pgAdmin. После нажатия ОК таблица будет создана.

Вместо bigint в качестве первичного ключа можно указать в качестве типа столбца bigserial. Этот тип инкрементируется автоматически при добавлении каждой новой строки, поэтому создавать последовательность для него не нужно. То есть в самом простом случае, если у вас нет каких-либо особых правил для формирования id записи, можно порекомендовать использовать bigserial.

Давайте посмотрим содержимое нашей таблицы. Для этого правой кнопкой мыши нажмём на неё и выберем в контекстном меню View Data - View 100 rows.

Установка postgresql

Предположим, вы только что поставили Ubuntu и вам нужно развернуть какую-нибудь БД локально для разработки ПО. Предположим также, что для этих целей вы решили использовать СУБД PostgreSQL. Установка предельно проста - в консоли нужно выполнить следующую команду:

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

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

От вас потребуется ввести название роли. Забегая вперёд, настоятельно рекомендую вам ввести в точности такое же имя, какое отображается у вас в консоли до знака @. То есть чтобы имя вашего аккаунта совпало с именем роли. Предположим, в консоли у нас отображается human@human-desktop. Тогда нужно ввести human.

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

Далее нам необходимо создать базу данных. Назовём её, например, mydb. Но лучше назвать так же, как вы назвали роль (т.е. human). Выполним команду:

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

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

alter user your_user_name with encrypted password 'your_password';
grant all privileges on database your_database to your_user_name;

Выход из консоли postgres осуществляется командой \?

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

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

Теперь вы находитесь внутри и можете выполнять любые доступные вам sql-запросы.

Favorite

Добавить в избранное

Главное меню » Базы данных » Как проверить версию PostgreSQL

8 Примера установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

P ostgreSQL, часто называемый просто Postgres, представляет собой универсальную систему управления объектно-реляционными базами данных с открытым исходным кодом.

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

В этой статье мы объясним, как узнать, какая версия сервера PostgreSQL работает в вашей системе.

Версия PostgreSQL

PostgreSQL имеет версии по следующей схеме:

  • MAJOR- Начиная с PostgreSQL 10, каждый новый основной выпуск увеличивает часть версии MAJOR на единицу, например, на 10, 11 или 12. До PostgreSQL 10 основные версии были представлены десятичным числом, например, 9.0 или 9.6.
  • MINOR- Незначительный номер релиза является последней частью номера версии. Например, 11.4 и 11.6 являются второстепенными версиями, которые являются частью PostgreSQL версии 11 9.6.15 и 9.6.16 являются частью PostgreSQL версии 9.6.

Основные выпуски PostgreSQL с новыми функциями обычно выпускаются раз в год. Каждый основной релиз поддерживается в течение 5 лет.

Использование командной строки

Команда выведет версию PostgreSQL:

В этом примере используется версия сервера PostgreSQL 10.6.

Вы можете найти путь к двоичному файлу с помощью команды locate или find:

Вывод должен выглядеть примерно так:

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

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

Вывод будет выглядеть примерно так:

Использование оболочки SQL

Вы можете получить доступ к оболочке PostgreSQL с помощью GUI-клиента, такого как pgAdmin или с помощью psql:

Следующий оператор отображает версию сервера PostgreSQL вместе с информацией о сборке:

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

Вывод

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

PostgreSQL, как сказано на её официальном сайте, это самая продвинутая в мире реляционная база данных с открытым исходным кодом.

Использование PostgreSQL

Как запустить службу PostgreSQL. Как управлять службой PostgreSQL

Запуск службы PostgreSQL:

Остановка службы PostgreSQL:

Добавление службы PostgreSQL в автозагрузку:

Удаление службы PostgreSQL из автозагрузки:

Для просмотра состояния процесса PostgreSQL:

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

Как узнать, какая версия PostgreSQL запущена

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

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


Для определения версии клиента:


Ещё один вариант определения версии PostgreSQL:


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

Хотя вместо postgres можно использовать postmaster, использование postgres предпочтительнее, поскольку postmaster это устаревший псевдоним для postgres.

Если вы предпочитаете вариант с SQL, то подключитесь к интерактивному терминалу:

Также вам может пригодиться один из следующих вариантов


Как инициализировать базу данных PostgreSQL

Остановите службу, если она запущена:

Директория /var/lib/postgres/ должна принадлежать пользователю postgres:

Смените пользователя на postgres:

Выполните инициализацию БД:

Если вы столкнулись с ошибкой:

То найдите расположение файла initdb:

И укажите до него полный путь в команде инициализации:

Нажмите CTRL+D

Запустите службу PostgreSQL:

Создайте нового пользователя (например, user):

При желании, вы можете установить пароль для пользователя, это делается командой с ключом -W:

Создайте базу данных (например, my-first-db):

Как подключиться к локальному серверу PostgreSQL

Для подключения к интерактивному терминалу PostgreSQL используется команда psql.

Примеры синтаксиса команд:

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

Какой конфигурационный файл использует PostgreSQL

Конфигурационный файл PostgreSQL носит имя postgresql.conf.

В системе может быть несколько конфигурационных файлов PostgreSQL. Вы можете найти их командой:

Что особенно важно, systemd может использовать свои собственные конфигурационные файлы, например:

  • /usr/lib/systemd/system/postgresql@.service.d/kali_postgresql.conf (путь в Kali Linux)
  • /usr/lib/sysusers.d/postgresql.conf (путь в Arch Linux)

Если вы настраиваете PostgreSQL, но после перезапуска службы с помощью systemd (systemctl) изменения не применяются, возможно, вы просто редактируете неверный файл.

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

  • /var/lib/postgres/data/postgresql.conf

С пакетом PostgreSQL могут поставляться образцы конфигурационных файлов, например:

  • /usr/share/postgresql/14/postgresql.conf.sample
  • /usr/share/postgresql/postgresql.conf.sample

Как обновить базу данных PostgreSQL при переходе на новую версию


Оно означает, что в системе 2 установленные версии PostgreSQL:

Если запустить службу PostgreSQL командой:

И проверить версию командой:

То будет выведено следующее:


То есть по умолчанию используется 13, устаревшая версия.

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

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

Последующие действия подразумевают, что вы

1) установили новую версию PostgreSQL, но ещё не использовали её, то есть не сохраняли базы данных, поскольку файлы новой версии будут удалены.

2) хотите перенести старые база данных в новый формат

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


На скриншоте только один из них online (я успел удалить пакет postgresql-13), но у вас оба должны быть online, иначе перенос базы данных не удастся.

Пример правильного вывода:

Как можно увидеть, обе версии 13 и 14 в настоящее время установлены и запущены. Держите в уме, что при переносе старой базы данных в новый формат вам понадобиться двойной объём места на диске, поскольку pg_upgradecluster копирует данные.

Процедура обновления включает в себя следующее:

1. Удаляем данные новой версии:

2. Запускаем процедуру обновления кластера:


3. Когда операция будет завершена, дважды проверьте, что всё работает

4. Удалите старую версию

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

Вновь проверяем версию:


Теперь используется 14, то есть самая последняя версия.

В чём разница между postgres и psql

postgres

postgres - это сервер базы данных PostgreSQL. Чтобы клиентское приложение могло получить доступ к базе данных, оно подключается (по сети или локально) к работающему экземпляру postgres. Затем экземпляр postgres запускает отдельный серверный процесс для обработки соединения.

Один экземпляр postgres всегда управляет данными только одного кластера базы данных. Кластер базы данных — это набор баз данных, который хранится в общей папке файловой системы («область данных»). В системе может работать более одного экземпляра postgres одновременно, если они используют разные области данных и разные порты связи. Когда postgres запускается, ему необходимо знать расположение области данных. Местоположение должно быть указано параметром -D или переменной среды PGDATA; по умолчанию это значение не установлено. Обычно -D или PGDATA указывает непосредственно на каталог области данных, созданный initdb.

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

Чтобы запустить postgres в фоновом режиме со значениями по умолчанию, введите:

Чтобы запустить postgres с определенным портом, например, 1234:

Чтобы подключиться к этому серверу с помощью psql, укажите этот порт с параметром -p:

или установите переменную окружения PGPORT:

psql

psql — это интерфейс для PostgreSQL на основе терминала. Он позволяет вам вводить запросы в интерактивном режиме, отправлять их в PostgreSQL и просматривать результаты запросов. В качестве альтернативы ввод может быть из файла или из аргументов командной строки. Кроме того, psql предоставляет ряд мета-команд и различных функций, подобных оболочке, для облегчения написания сценариев и автоматизации широкого спектра задач.

Пример запуска psql:

Запуск psql от пользователя postgres, который создаётся по умолчанию:

Ошибки PostgreSQL

psql: error: не удалось подключиться к серверу: Нет такого файла или каталога

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

вы можете столкнуться с ошибкой:

В англоязычной версии эта ошибка выглядит так:

Эта ошибка означает, что служба PostgreSQL не запущена, для её запуска выполните команду:

Альтернативный вариант запуска службы следующий:

Другой возможной причиной ошибки может быть то, что psql ищет файл сокета в неверной директории: например, файл сокета помещён в /tmp, а psql ищет его в /run/postgresql/. В этом случае вы можете с помощью опции --host явно указать директорию, в которой находится сокет:

FATAL: не удалось создать файл блокировки "/run/postgresql/.s.PGSQL.5432.lock": Нет такого файла или каталога

При запуске системы БД, например, следующей командой:

Вы можете столкнуться с ошибкой:


В англоязычной версии ошибка выглядит так:

  1. Создать данную директорию (если она отсутствует) и сделать её владельцем пользователя postgres
  2. Отредактировать конфигурационный файл так, чтобы служба пыталась создавать файл блокировки в директории /tmp, на которую у всех пользователей есть право записи

Первый вариант — создаём директорию /run/postgresql/ и назначаем её владельцем пользователя postgres:

Второй вариант — открываем конфигурационный файл postgresql.conf (у вас может быть другое расположение)

И добавляем туда следующую запись:

sudo: postgres: command not found

Если при использовании postgres вы столкнулись с ошибкой:

то у этой проблемы может быть две возможных причины:

1. Не установлен пакет postgresql.

Установите его одной из следующих команд.

В Debian, Kali Linux, Linux Mint, Ubuntu и их производных:

В Arch Linux, Manjaro, BlackArch и их производных:

2. Исполнимый файл postgres находится за пределами $PATH

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

Найдите исполнимый файл


Как можно видеть на скриншоте, исполнимый файл присутствует для двух версий сервера:

  • /usr/lib/postgresql/13/bin/postgres
  • /usr/lib/postgresql/14/bin/postgres

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

psql: ошибка: ВАЖНО: роль "" не существует

При попытке запуска интерактивного терминала PostgreSQL

Вы можете столкнуться с ошибкой:

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

В англоязычной версии ошибка выглядит так:


Для psql необходимо имя пользователя и если оно не указано явно, то передаётся имя пользователя системы. Но поскольку данный пользователь не существует на сервере PostgreSQL, то возникает указанная выше ошибка.

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

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

Вы должны указать его расположение в параметре --config-file или -D, либо установить переменную окружения PGDATA

При запуске postgres вы можете столкнуться с ошибкой:


В англоязычной версии:

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

Конфигурационный файл называется postgresql.conf, но нужно указать не его, а директорию, в которой он содержится. Например:


initdb: command not found

Смотрите объяснение данной проблемы, а также дополнительные пути устранения в описании аналогичной ошибки: sudo: postgres: command not found

Найдите initdb с помощью:

  • /usr/lib/postgresql/13/bin/initdb
  • /usr/lib/postgresql/14/bin/initdb

И используйте в ваших командах абсолютный путь до файла initdb нужной вам версии, например:

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

2. Как установить PostgreSQL в автозапуск?

su - root
tar xvfz postgresql-8.3.7.tar.gz
cd postgresql-8.3.7
cp contrib/start-scripts/linux /etc/rc.d/init.d/postgresql
chmod a+x /etc/rc.d/init.d/postgresql

3. Проверяем состояние сервера

4. Как запустить, остановить, перезапустить PostgreSQL?

service postgresql stop
Stopping PostgreSQL: server stopped
ok
service postgresql start
Starting PostgreSQL: ok
service postgresql restart
Restarting PostgreSQL: server stopped
ok

5. Как посмотреть какая версия PostgreSQL запущена?

5. Как создать пользователя в PostgreSQL?

Для этого существуют два метода..

Метод 1: Создаем пользователя в через PSQL шелл, командой CREATE USER.

CREATE USER ramesh WITH password ‘tmppassword’;
CREATE ROLE

Метод 2: Создаем пользователя в через шелл команду createuser.

/usr/local/pgsql/bin/createuser sathiya
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

6. Как создать базу в PostgreSQL ?

Для этого существует 2 метода.

Метод 1: Создаем базу черезе PSQL шелл, с помощью команды CREATE DATABASE.

CREATE DATABASE mydb WITH OWNER ramesh;
CREATE DATABASE

Метод 2: Используем команду createdb.

/usr/local/pgsql/bin/createdb mydb -O ramesh
CREATE DATABASE

7. Получаем список всех баз в Postgresql?

8. Как удалить базу в PostgreSQL?

9. Пользуемся встроенным хелпом к командам

Команда \? отобразит строку помощи для команда PSQL. \h CREATE покажет хелп для всех команд который начинаются с CREATE.

10. Как получить список всех таблиц в базе данный в Postgresql?

11. Как узнать время выполнения запроса?

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

12. Как посмотреть список доступных функций в PostgreSQL ?

Для того чтобы получить список доступных функций, скажите \df+

13. Как отредактировать запрос к PostgreSQL в редакторе?

\e откроет редактор, в котором вы можете отредактировать запрос и сохранить его.

Читайте также: