Перейти к содержимому

Какой пароль у пользователя postgres по умолчанию

  • автор:

PostgreSQL (Русский)

PostgreSQL — это поддерживаемая сообществом система управления базами данных с открытым исходным кодом.

Установка

Установите пакет postgresql . Он также создаст системного пользователя postgres.

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

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

  • Если у вас есть sudo и ваш пользователь прописан в sudoers:
  • Или через su:

Смотрите также документацию sudo(8) или su(1) .

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

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

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

  • По умолчанию локаль и кодировка для кластера баз данных наследуются из вашего текущего окружения (используется значение $LANG). Если вас это не устраивает, вы можете прописать нужные параметры вручную с помощью опций —locale=локаль (где локаль должна быть одной из доступных системных локалей) и —encoding=кодировка для выбора кодировки (должна соответствовать выбранной локали). (После настройки базы данных вы сможете посмотреть используемые значения командой [postgres]$ psql -l .)
  • Если каталог с данными расположен на файловой системе без контроля целостности данных, вы можете включить встроенный в PostgreSQL подсчёт контрольных сумм для повышения гарантий целостности — для этого добавьте аргумент —data-checksums . Дополнительная информация описана в разделе #Включение подсчёта контрольных сумм. (После настройки базы данных вы сможете посмотреть. включена ли эта функция, командой [postgres]$ psql -c «SHOW data_checksums» .)
  • Другие доступные опции можно посмотреть в initdb —help или официальной документации.

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

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

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

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

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

Создание первой базы данных

Становимся пользователем postgres. Добавляем нового пользователя базы данных с помощью команды createuser:

Создаём новую базу данных от имени пользователя, имеющего доступ на чтение-запись, с помощью команды createdb (выполните эту команду в оболочке вашего обычного пользователя, если имя будущего владельца базы данных совпадает с вашим именем пользователя в Linux, в ином случае добавьте опцию -O имя-пользователя )

Знакомство с PostgreSQL

Доступ к оболочке базы данных

Становимся postgres пользователем. Запускаем основную оболочку базы данных psql, в которой мы сможем создавать, удалять базы данных/таблицы, задавать права и запускать команды SQL. Используйте опцию -d , чтобы указать название базы данных, которую вы создали (если опцию не указать, то psql попытается подключиться к базе, имя которой совпадает с именем пользователя).

Некоторые полезные команды:

Подключение к определённой базе данных:

Список всех пользователей и их уровни доступа:

Краткая информация о всех таблицах в текущей базе данных:

Выход из оболочки psql :

Есть, конечно, много других мета-команд, но именно эти должны помочь вам начать работу. Для просмотра всех мета-команд введите:

Дополнительные настройки

Файл настроек сервера баз данных PostgreSQL — postgresql.conf . Этот файл находится в папке данных сервера, обычно /var/lib/postgres/data . В этой же папке находятся основные файлы настроек включая и pg_hba.conf , который определяет параметры аутентификации, как для локальных пользователей, так и для пользователей с других хостов.

Ограничение доступа к суперпользователю по умолчанию

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

Можно добавить дополнительные строки в зависимости от ваших потребностей.

Требование пароля при входе

Измените /var/lib/postgres/data/pg_hba.conf , прописав метод аутентификации для каждого пользователя (или «all» для всех пользователей) на scram-sha-256 (предпочтительно) или md5 (менее безопасно; по возможности стоит его избегать):

Если вы выбрали scram-sha-256 , также нужно изменить /var/lib/postgres/data/postgresql.conf :

Перезапустите службу postgresql.service и заново пропишите пароли для пользователей с помощью SQL-запроса ALTER USER пользователь WITH ENCRYPTED PASSWORD ‘пароль‘; .

Доступ только через Unix-сокет

В разделе «connections and authentication» пропишите:

Это полностью отключит доступ через сеть. Не забудьте перезапустить службу postgresql.service для применения изменений.

Доступ с удалённых хостов

В разделе «connections and authentication» раскомментируйте или исправьте строку listen_addresses по вашему желанию, например:

Можно использовать ‘*’ для прослушивания всех доступных сетевых интерфейсов.

Затем измените настройки аутентификации:

где ip_адрес — IP-адрес удалённого клиента.

Смотрите также документацию по pg_hba.conf.

Перезапустите службу postgresql.service для применения изменений.

В случае проблем посмотрите журнал сервера:

Настройка аутентификации через PAM

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

Например, та же конфигурация, что и выше, но с включенным PAM:

Однако сервер PostgreSQL работает без прав root и не сможет получить доступ к файлу /etc/shadow . Мы можем обойти это, разрешив группе postgres доступ к этому файлу:

Изменение стандартного каталога данных

По умолчанию PostgreSQL настроен на использование каталога /var/lib/postgres/data для хранения всех баз данных. Для его изменения выполните следующие шаги:

Создайте новый каталог и сделайте пользователя postgres его владельцем:

Войдите в пользователя postgres и выполните инициализацию кластера:

Отредактируйте службу postgresql.service , создав drop-in файл и переопределив настройки Environment и PIDFile . Например:

Если вы хотите использовать каталог в /home , добавьте ещё одну строку:

Изменение кодировки новых баз данных на UTF-8

Когда создаётся новая база данных (например, командой createdb blog ), PostgreSQL просто копирует шаблон базы данных. Есть два стандартных шаблона: template0 — ванильный, и template1 , который используется по умолчанию и предназначен для редактирования администратором. Один из вариантов изменения кодировки новой базы данных — изменить шаблон template1 . Для этого зайдите в оболочку PostgreSQL ( psql ) и выполните следующее:

Сперва нужно удалить template1 . Шаблоны нельзя удалять, так что сперва нужно преобразовать его в обычную базу данных:

Теперь можно удалить:

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

Теперь снова сделайте template1 шаблоном:

По желанию, если вы не хотите, чтобы кто-либо подключался к этому шаблону, присвойте параметру datallowconn значение FALSE :

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

Если снова войти в psql и проверить базу данных, вы должны увидеть правильную кодировку новой базы данных:

Включение подсчёта контрольных сумм

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

  • Есть небольшое влияние на производительность, особенно при чтении больших массивов данных с диска. На операции в памяти это не влияет.
  • PostgreSQL не может исправить повреждённые данные — он только прервёт транзакции, читающие с повреждённых страниц, чтобы предотвратить дальнейшее повреждение или получение некорректных результатов выполнения.
  • Контрольные суммы охватывают только страницы данных (строк) на диске, но не метаданные или управляющие структуры. Страницы в памяти не проверяются. Хранилища с коррекцией ошибок и память с ECC по-прежнему полезны.
  • Чтобы включить подсчёт контрольных сумм при создании кластера, добавьте аргумент —data-checksums к команде initdb .
  • Чтобы проверить, включен ли подсчёт контрольных сумм, выполните [postgres]$ psql -c «SHOW data_checksums» (выведется off или on ).
  • Чтобы включить подсчёт контрольных сумм на существующем кластере:
    службу postgresql.service .
  1. Выполните команду [postgres]$ pg_checksums —pgdata /var/lib/postgres/data —enable (или —disable , если вы хотите наоборот выключить эту функцию). Включение подсчёта контрольных сумм приведёт к перезаписи всех страниц базы данных, что займет некоторое время в больших базах данных. службу postgresql.service .

Графические инструменты

  • phpPgAdmin — Веб-интерфейс для администрирования PostgreSQL.
  • pgAdmin — Комплексный графический интерфейс для управления PostgreSQL.
  • pgModeler — Инструмент для моделирования баз данных PostgreSQL.

Список инструментов, поддерживающих несколько разных СУБД, можно посмотреть в статье List of applications/Documents#Database tools.

Обновление PostgreSQL

alt=»Tango-view-fullscreen.png» width=»48″ height=»48″ />This article or section needs expansion. alt=»Tango-view-fullscreen.png» width=»48″ height=»48″ />

Для обновления до новой мажорной версии PostgreSQL (например, с версии 13.x на версию 14.y) необходима специальная процедура.

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

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

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

Есть два основных способа обновить базу данных PostgreSQL. Подробности читайте в официальной документации.

pg_upgrade

Утилита pg_upgrade пытается скопировать как можно больше совместимых данных между кластерами и обновить всё остальное. Как правило, это самый быстрый метод обновления большинства экземпляров, хотя он требует доступа к бинарным файлам исходной и целевой версий PostgreSQL. Прочтите справочную страницу pg_upgrade(1) , чтобы понять, какие действия он выполняет. Для нетривиальных экземпляров (например, с потоковой репликацией или трансляцией журналов) сперва ознакомьтесь с официальной документацией.

Для тех, кто хочет использовать pg_upgrade , доступен пакет postgresql-old-upgrade , который всегда отстаёт на одну мажорную версию от основного пакета PostgreSQL. Его можно установить параллельно с новой версией PostgreSQL. Для обновления более старых версий PostgreSQL доступны пакеты AUR, например postgresql-12-upgrade AUR . (Нужно использовать команду pg_upgrade из той версии PostgreSQL, на которую вы хотите обновиться.)

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

Когда вы будете готовы к обновлению, выполните следующие шаги:

  1. Пока старая база данных всё ещё доступна, соберите аргументы для команды initdb , которые использовались при создании базы. Команды для просмотра текущих настроек кластера описаны в разделе #Начальная настройка. службу postgresql.service . (Проверьте статус юнита, чтобы убедиться, что PostgreSQL завершился корректно, иначе pg_upgrade не сможет отработать корректно.) пакеты postgresql , postgresql-libs и postgresql-old-upgrade .
  2. Переименуйте каталог со старым кластером и создайте каталог для нового кластера и временный каталог:
  3. Инициализируйте новый кластер командой initdb с теми же аргументами, которые использовались для старого кластера:
  4. Обновите кластер, выполнив эту команду (замените PG_VERSION на номер старой версии, например 13 ):

Выгрузка и загрузка вручную

Ещё можно сделать что-то вроде такого (после обновления и установки postgresql-old-upgrade ):

  • В примере показано обновление с PostgreSQL 13; посмотрите в /opt/ установленную у вас версию postgresql-old-upgrade и исправьте команды по необходимости.
  • Если вы меняли файл pg_hba.conf , вам может понадобиться временно разрешить полный доступ к старому кластеру с локальной системы. После обновления не забудьте прописать нужные вам настройки в новом кластере и перезапустить службу postgresql.service .

Решение проблем

Ускорение мелких транзакций

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

Запретить запись на диск во время бездействия

PostgreSQL периодически обновляет свою статистику, лежащую в файле. По умолчанию этот файл находится на диске, что не даёт отдыхать жёсткому диску (и изнашивает его), заставляя его шуметь. Однако можно легко и безопасно переместить статистику в ОЗУ с помощью такой настройки:

Проблемы с pgAdmin 4 после обновления до PostgreSQL 12

Если вы видите ошибки вроде string indices must be integers при навигации по дереву слева или column rel.relhasoids does not exist при просмотре данных, удалите сервер из списка соединений в pgAdmin и добавьте его заново. Без этого pgAdmin продолжает считать его сервером PostgreSQL 11, что и приводит к таким ошибкам.

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

Причина скорее всего в том, что существующий пакет не скомпилирован для новой версии (а она может быть актуальной), решение — пересобрать пакет вручную или дождаться обновления пакета расширения.

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

Это происходит потому, что старая версия postgres из пакета postgresql-old-upgrade не имеет необходимых расширений (.so файлов) в своём каталоге lib. Предлагаемое здесь решение грязное и может вызвать много проблем, поэтому сохраните резервную копию базы данных на всякий случай. В целом, скопируйте необходимые .so файлы расширений из /usr/lib/postgresql/ в /opt/pgsql-XX/lib/ (не забудьте заменить XX на мажорную версию пакета postgresql-old-upgrade ).

Например, для timescaledb:

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

Пароль пользователя postgres

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

Как задать пароль при добавлении пользователя и БД

Команды по администрированию базами и пользователями выполняются от имени системного пользователя postgres

root может стать им выполнив su — postgres

Затем можно без пароля попасть в интерфейс БД psql

Или то же самое одной командой

Пользователь может создать базу

Затем добавить пользователя и задать для него пароль

=# create user appadmin with encrypted password 'jdfh8jhtghnjkfrvhyu';

После этого пользователю нужно дать права для работы с базой данных

=# grant all privileges on db1 mydb to appadmin;

Изменить пароль пользователя Postgres

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

=# alter user anotheruser with encrypted password 'NEW_STRONG_PASSWORD';

Непосредственно для системного пользователя postgres пароль не нужен, им может стать root выполнив su как показано ранее. Если нужна авторизация root может установить для postgres новый пароль

Затем пароль нужно ввести дважды, отображаться он не будет.

Пользователь appadmin — не системный, он существует только в postgresql.

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

psql -h myhost -d db1 -U appadmin -W

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

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

PostgreSQL

База данных

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

В PostgreSQL, когда вы однажды установили программу установки, она попросит вас установить пароль для базы данных по умолчанию, то есть «postgres». Вы также можете позже создать собственного пользователя в PostgreSQL и установить для него пароль. Но что, если возникает необходимость изменить пароль для управления базой данных или административных функций, и в вашей голове возникает вопрос, как и откуда вы можете изменить пароль? Не о чем беспокоиться, потому что эта статья будет специально посвящена ответу на ваш вопрос с помощью простых и различных способов изменения паролей пользователей в PostgreSQL. Это руководство поможет вам изменить пароли пользователей и четко определить каждый шаг для вашего лучшего понимания.

Различные режимы изменения пароля пользователя:

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

  • Используя pgAdmin.
  • Используя psql.

Шаги по изменению пароля с помощью pgAdmin

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

вы открываете PostgreSQL, перед вами отображается

С левой стороны можно увидеть меню навигации, в котором определены «Логин / Групповые роли». При нажатии на нее появляется выпадающий список.

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

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

Давайте сначала создадим имя пользователя и установим пароль для этого имени пользователя, а затем мы изменим пароль. Чтобы создать имя пользователя, нажмите «Логин / Роли группы» и нажмите «Создать» логин или групповую роль. Здесь мы создадим роль входа в базу данных с желаемыми ролями.

Давайте сначала создадим имя пользователя и установим пароль

После нажатия на «Логин / Групповые роли» появится следующее:

После нажатия на «Логин

В поле имени вы можете указать любое имя, какое захотите. Затем нажмите «Определения» и введите пароль для своего имени пользователя.

В поле имени вы можете указать любое имя, какое захотите

В «Привилегиях» определите свои роли пользователей и в конце сохраните данные для входа в систему.

«Привилегиях» определите свои роли пользователей и

Теперь вы создали пользователя и можете просто изменить пароль, щелкнув свое имя пользователя, а затем «Свойства» на боковой панели навигации следующим образом:

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

В окне «Свойства» откроется тот же экран, на котором вы создали имя пользователя для входа в систему. Здесь в «Паролях» вы можете ввести свой новый пароль и сохранить его в конце.

В окне «Свойства» откроется тот же экран, на котором вы

В поле «Пароли» повторно введите новый пароль, и ваш пароль будет изменен на имя пользователя «saeed_raza».

Изменить пароль через psql

В оболочке SQL (psql) вы также можете изменить пароль двумя способами:

  • Использование операторов ALTER ROLE.
  • Использование мета-команд.

Измените пароль с помощью операторов ALTER ROLE

Операторы ALTER ROLE используются для изменения паролей пользователя в PostgreSQL. Вот основной синтаксис для использования операторов ALTER Role в вашей базе данных:

Операторы ALTER ROLE используются для изменения паролей

В приведенном выше заявлении укажите имя пользователя вместо «имени пользователя», пароль которого вы хотите изменить. Затем введите новый пароль вместо new_password, чтобы изменить пароль. Предложение VALID UNTIL не является обязательным; он используется для ввода периода времени, в течение которого вы хотите, чтобы пароль действовал после указанной даты или времени, когда истечет срок действия пароля.

Ниже приведена иллюстрация изменения пароля пользователя «saeed_raza» на новый пароль «data».

Команда ALTER ROLE после оператора SQL обеспечивает изменение пароля в базе данных.

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

ALTER ROLE saeed_raza WITH PASSWORD ‘defined’

VALID UNTIL ‘March 30, 2022’ ;

Я изменил пароль с «данные» на «определенный» для имени пользователя «saeed_raza» и упомянул дату, когда пароль для этого имени пользователя станет действительным, а именно «30 марта 2022 года». Срок действия пароля истечет до этой даты, но если вы не добавите в оператор предложение VALID UNTIL, пароль будет действителен в течение всего времени жизни.

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

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

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

В приведенных выше выходных данных вы можете ясно видеть, что в имени роли «saeed_raza» пароль действителен до 30 марта 2022 года.

Измените пароль с помощью мета-команды

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

Во-первых, при запуске psql вы должны ввести имя пользователя, пароль которого вы хотите изменить:

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

Я ввел имя пользователя saeed_raza, потому что хочу изменить пароль этого пользователя в PostgreSQL. Теперь следуйте этому простому синтаксису, который также изменит пароль пользователя или пароль по умолчанию PostgreSQL, просто используя метакоманду:

postgres = # \ password

Enter new password :

Enter it again:

Теперь пароль для пользователя saeed

Теперь пароль для пользователя saeed_raza изменен с помощью этой простой метакоманды.

Вывод

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Капельница от запоя — облегчение за 15–20 минут