Linux пароль для postgres

Пароль пользователя postgres — как задать и изменить пароль

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

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

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

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

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

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

=# create user appadmin with encrypted password ‘jdfh8jhtghnjkfrvhyu’;

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

=# grant all privileges on db1 mydb to appadmin;

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

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

sudo -u postgres createuser anotheruser

Вторая служит для изменения паролей уже существующих пользователей, выполняется из консоли 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

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

Про создание дампов баз данных Postgres и их загрузку.

Источник

Sysadminium

База знаний системного администратора

Методы аутентификации в PostgreSQL

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

Процесс подключения

Процесс подключение можно разделить на три этапа:

  • Идентификация – определение имени роли базы данных.
  • Аутентификация – проверка того, что пользователь тот за кого себя выдаёт. Есть много разных методов аутентификации, например проверка пароля.
  • Авторизация – проверка прав этого пользователя. Например может ли этот пользователь подключаться к этой базе данных или нет.

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

Метод аутентификации trast (alex@deb:

$ psql -U postgres)

Основные настройки

Конфигурационный файл отвечающий за настройки аутентификации – pg_hba.conf. Он находится в каталоге PGDATA:

Его местоположение можно изменить задав параметр hba_file в конфигурационном файле postgresql.conf:

Читайте также:  Плоские значки windows 10

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

  • pg_ctl reload – из операционной системы;
  • SELECT pg_reload_conf(); – если вы подключены к СУБД.

Если вы подключены к СУБД, то узнать местоположение файла можно таким способом:

Файл pg_hba.conf состоит из строк, а строки состоят из следующих полей:

  • тип подключения;
  • имя БД;
  • имя пользователя;
  • адрес узла;
  • метод аутентификации;
  • необязательные дополнительные параметры в виде имя=значение. Эти параметры нужны некоторым методам аутентификации.

Эти строки обрабатываются сверху вниз и применяется первая найденная строка. Таким образом если тип подключения, имя БД, имя пользователя и адрес сервера совпали, то применяется определённый метод аутентификации.

pg_hba – если-то

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

Вот пример файла pg_hba.conf, который создаётся при сборке из исходников:

Первая строчка это тип подключения local, в котором используется локальный unix сокет, и не задействована сеть. При таком подключении все пользователи (all) могут подключаться методом trust. О методах поговорим позже.

Третья и четвёртая строки относятся к tcp подключениям (host). При таком подключении все пользователи могут подключаться только из локального хоста (127.0.0.1/32 или ::1/128) используя метод trust.

Последние три строки относятся к репликации. Репликация возможна по сокету (local) и по сети (host) но только с локального хоста (127.0.0.1/32 или ::1/128). Здесь тоже используется метод trust.

Если вы подключены к СУБД, то сможете посмотреть содержимое файла pg_hba.conf с помощью представления pg_hba_file_rules:

Если в строке допущена ошибка, то это представление в поле error покажет ошибку.

Параметры подключения

Теперь рассмотрим параметры подключений!

Типы подключений:

  • local – использует unix сокет;
  • host – использует TCP/IP, оно может быть шифрованным с помощью SSL или не шифрованным;
  • hostssl – только зашифрованный TCP/IP;
  • hostnossl – только не зашифрованный TCP/IP.

Имя базы данных:

  • all – подключение к любой БД;
  • sameuser – БД, совпадающая по имени с ролью;
  • samerole – БД, совпадающая по имени с ролью или группой, в которую она входит;
  • replication – специальное разрешение для протокола репликации;
  • имя базы данных – имя конкретной базы данных, или через запятую можно перечислить список баз данных.

Адрес узла:

  • all – любой IP-адрес;
  • ip-адресс – конкретный ip адрес, подсеть, или диапазон (172.20.143.0/24 или 172.20.143.0 255.255.255.0)
  • samehost – означает адрес сервера с которого ведётся подключение, аналог 127.0.0.1;
  • samenet – означает любой ip адрес из подсети сервера;
  • доменное имя (или часть доменного имени, начиная с точки) – при этом postgresql проверяет ip-адрес подключающегося клиента на принадлежность к этому домену.
Читайте также:  Оформление линукс под виндовс

Имя роли:

  • all – любая роль;
  • – роль с указанным именем, при этом можно перечислить роли через запятую;
  • + – групповая роль, в которую включены другие роли.

Тип аутентификации:

  • Аутентификация без проверок:
    • trust – разрешает подключение без аутентификации, то есть без проверки пароля или любых других проверок;
    • reject – запрещает подключение ничего не проверяя;
  • Аутентификация по паролю:
    • md5 – пароль хранится в СУБД и шифруется MD5;
    • scram-sha-256 – пароль хранится в СУБД, используется протокол SCRAM (более надёжно);
    • ldap [параметры] – пароль хранится на сервере LDAP;
    • radius [параметры] – пароль хранится на сервере RADIUS;
    • pam [параметры] – пароль хранится в подключаемом модуле PAM;
  • Внешняя аутентификация:
    • peer [map=…] – запрашивает имя пользователя у операционной системы (только для Linux и только для локальных подключений);
    • cert [map=…] – аутентификация с использованием клиентского SSL-сертификата;
    • gss [map=…] – аутентификация Kerberos по протоколу GSSAPI;
    • sspi [map=…] – аутентификация Kerberos/NTLM для Windows.

Пароль в СУБД

Пароль хранится в СУБД в зашифрованном виде при использовании методов аутентификации md5 и scram-sha-256.

Задать пароль роли при её создании можно так:

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

Пользователю с пустым паролем будет отказано в доступе при аутентификации по паролю.

Пароли в зашифрованном виде хранятся в системном каталоге, в таблице pg_authid.

При аутентификации пароль можно вводить вручную, но не всегда это удобно. Еще можно установить переменную $PGPASSWORD на клиенте, в неё нужно задать пароль, тогда утилита psql будет использовать пароль из этой переменной. Но это не очень удобно и не безопасно.

Также можно создать файл

/.pgpass. Там можно прописать разные пароли к разным серверам следующим образом:

Такой файл должен иметь права 600 (rw- — —). Строки в нем просматриваются сверху вниз и используется первая найденная строка.

Сопоставление имен

Когда вы используете метод аутентификации peer, cert, gss или sspi вам нужно сопоставить имя пользователя в ОС и имя роли в СУБД. Это делается с помощью конфигурационного файла pg_ident.conf. Этот файл также состоит из строчек, строчки состоят из полей.

Поля в этом файле такие:

  • Название соответствия – оно затем прописывается в параметре map в файле pg_hba.conf;
  • Внешнее имя, или регулярное выражение;
  • Внутреннее имя роли базы данных.

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

  • Если идет шифрованное соединение, то разрешается подключаться к одноименной базе с именем пользователя. При этом используется метод аутентификации по сертификату с сопоставлением имен m1. Это сопоставление вытаскивает имя из сертификата и если оно соответствует регулярному выражению /^(.*)@domain.com$, то первая часть имени (до @domain.com) будет именем роли.
  • Если идет локальное соединение по сокету, то разрешается подключаться всем с помощью метода идентификации peer. При этом используется сопоставление имён m2. Таких сопоставлений (m2) две строчки, это означает что пользователь ОС student может подключиться только под ролью alice или bob.
  • Если идет подключение по сети, но с адреса сервера (samehost), то используется метод аутентификации md5 (по паролю).
Читайте также:  Which linux file server

Подробнее про аутентификацию можете почитать тут.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

PostgreSQL (Какой пароль и пользователь по умолчанию. )

Модератор: /dev/random

PostgreSQL

Сообщение DjSpike » 02.03.2008 18:55

Re: PostgreSQL

Сообщение fed71 » 02.03.2008 20:08

.
# Database administrative login by UNIX sockets
local all postgres ident sameuser

Я не знаю кто я. Не помню ни серии своей, ни инвентарного номера.

Re: PostgreSQL

Сообщение DjSpike » 02.03.2008 20:28

есть файл pg_hba.conf
Вот что в нем указано:

Re: PostgreSQL

Сообщение Poor Fred » 02.03.2008 20:54

Re: PostgreSQL

Сообщение fed71 » 02.03.2008 20:59

локальные пользователи компьютера, на
котором запущен сервер postmaster, могут подключаться к БД под именем
любого пользователя без указания пароля. Связано это с тем, что хост
localhost по умолчанию является доверенным. Изменить это можно в файле
pg_hba.conf, находящемся в каталоге data, инициированном командой
initdb.

Синтаксис этого файла хорошо прокомментирован в нем самом. Поле TYPE
содержит тип записи, который может быть одним из следующих: local
(соединение, устанавливаемое с того же компьютера, на котором работает
сервер СУБД; использует сокеты Unix), host (соединение TCP/IP) или
hostssl (защищенное соединение TCP/IP с использованием протокола SSL).

Поле METHOD может содержать следующие записи:

* trust — доверенный хост, подключения не требуют пароля;

* reject — отклонить соединение;

* password — требовать соответствия пароля (передается в открытом
виде);

* crypt — требовать соответствия пароля (пароль шифруется);

* krb4, krb5 — аутентификация Kerberos;

* ident — аутентификация по карте соответствия имени пользователя
PostgreSQL системному имени пользователя. Карты соответствия
содержатся в файле pg_ident.conf.

Назначение остальных полей файла pg_hba.conf пояснений, думаю, не
требует. При запросе соединения проверка условий выполняется с начала
файла до обнаружения соответствия, после чего выполняется действие,
заданное полем METHOD. Если соответствие не будет найдено, соединение
не будет установлено.

Следует заметить, что после внесения изменений в этот файл требуется
перезапустить процесс postmaster, послав ему сигнал SIGHUP, либо
перезагрузить сервер СУБД командой:

Я не знаю кто я. Не помню ни серии своей, ни инвентарного номера.

Источник

Оцените статью