как узнать логин postgresql

Я забыл свое имя пользователя и пароль PostgreSQL, что мне делать? [Дубликат]

9 ответов

Для установки Windows создается пользователь Windows. И «psql» использует этого пользователя для подключения к порту. Если вы измените пароль пользователя PostgreSQL, он не изменит Windows. Командная строка juste ниже работает только в том случае, если у вас есть доступ к командной строке.

Вместо этого вы можете использовать приложение Windows GUI «c: \ Windows \ system32 \ lusrmgr.exe». Это приложение управляет пользователями, создаваемыми Windows. Теперь вы можете изменить пароль.

Что я сделал для решения одной и той же проблемы:

Откройте файл pg_hba.conf с редактором gedit с терминала:

Он попросит пароль. Введите пароль администратора. Это откроет gedit с файлом. Вставьте следующую строку:

Сохраните и закройте. Закройте терминал и откройте его снова и запустите эту команду:

Теперь вы войдете в консоль psql. Теперь измените пароль, введя это:

Наконец, удалите эту определенную строку вставить в pg_hba и сохранить его.

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

и войти в postgres с postgres / postgres в качестве пользователя / пароля

Этот файл должен содержать строки следующего формата:

hostname: port: database: username: password

(Вы можете добавить комментарий к файлу, скопировав строку выше и перед ней с помощью #.) Каждый из первых четырех поля могут быть буквальным значением или *, что соответствует чему-либо. Будет использовано поле пароля из первой строки, которое соответствует текущим параметрам соединения. (Поэтому сначала ставьте более конкретные записи, когда вы используете подстановочные знаки.) Если запись должна содержать: или \, скройте этот символ. Имя хоста localhost соответствует как TCP (имя хоста localhost), так и сокету Unix домена (pghost empty или каталог сокета по умолчанию), исходящие от локальной машины. На резервном сервере имя базы данных репликации соответствует потоковым соединениям репликации, сделанным на главный сервер. Поле базы данных имеет ограниченную полезность, поскольку пользователи имеют одинаковый пароль для всех баз данных в одном кластере.

Источник

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

Часть нижеописанных операций нужно выполнять в командной оболочке PostgreSQL. Она может быть запущена от пользователя postgres — чтобы войти в систему от данного пользователя, вводим:

* если система выдаст ошибку, связанную с нехваткой прав, сначала повышаем привилегии командой sudo su или su.

Теперь запускаем командную оболочку PostgreSQL:

* в данном примере, вход выполняется от учетной записи postgres к шаблонной базе template1.

Для просмотра всех пользователей СУБД:

=# select * from pg_user;

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

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

1. Создание пользователя

Добавление новой роли (пользователя):

=# CREATE USER dmosk WITH PASSWORD ‘myPassword’;

* в примере создана роль dmosk с паролем myPassword.

2. Назначение прав на использование базы данных

Даем права на базу командой:

=# GRANT ALL PRIVILEGES ON DATABASE «database1» to dmosk;

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

* в примере подсоединимся к базе с названием database1.

а) Так мы добавим все права на использование всех таблиц в базе database1 учетной записи dmosk:

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO «dmosk»;

* в большинстве случаев, используется схема по умолчанию public. Но администратор может создать новую схему. Это нужно учитывать при назначении прав.

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

database1=# GRANT ALL PRIVILEGES ON TABLE table1 IN SCHEMA public TO «dmosk»;

* в данном примере мы даем права на таблицу table1.

Выходим из SQL-оболочки:

3. Настройка файла pg_hba.conf

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

Для начала смотрим путь расположения данных для PostgreSQL:

В ответ мы получим, что-то на подобие:

* в данном примере /var/lib/pgsql/9.6/data/ — путь расположения конфигурационных файлов.

Добавляем права на подключение нашему созданному пользователю:

.
# IPv4 local connections:
host all dmosk 127.0.0.1/32 md5
.

* в данном примере мы разрешили подключаться пользователю dmosk ко всем базам на сервере (all) от узла 127.0.0.1 (localhost) с требованием пароля (md5).
* необходимо, чтобы данная строка была выше строки, которая прописана по умолчанию
host all all 127.0.0.1/32 ident.

После перезапускаем службу:

systemctl restart postgresql-9.6

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

4. Проверка

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

Настройка прав доступа к базе с помощью групп

Сначала создадим групповую роль:

=# CREATE ROLE «myRole» NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

* данной командой создана группа myRole с минимальными правами.

Теперь добавим ранее созданного пользователя dmosk в эту группу:

=# GRANT «myRole» TO dmosk;

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

и предоставим все права для группы myRole всем таблицам базы database1

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO GROUP «myRole»;

Редактирование пользователя

1. Смена пароля

Рассмотрим несколько примеров смены пароля пользователя.

=# ALTER USER postgres PASSWORD ‘password’

* в данном примере мы зададим пароль password для пользователя postgres.

С запросов ввода пароля:

* после ввода данной команды система потребует дважды ввести пароль для пользователя (в нашем примере, postgres).

Удаление пользователей и групп

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

database1=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM «dmosk»;

* обратите внимание, данный запрос отличается от предоставления прав двумя моментами: 1) вместо GRANT пишем REVOKE; 2) вместо TO «dmosk» пишем FROM «dmosk»;

Назначение особых прав пользователям PostgreSQL

Помимо ALL PRIVILEGES можно выдавать права на особые операции, например:

=# GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO «dmosk»;

* команда позволит выдать права на получение данных, их обновление и добавление. Другие операции, например, удаление будут запрещены для пользователя dmosk.

Назначение прав для определенной таблицы:

database1=# GRANT ALL PRIVILEGES ON table_users TO «dmosk»;

* в данном примере мы предоставим все права на таблицу table_users в базе данных database1;

Учетная запись для резервного копирования

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

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

=# CREATE USER bkpuser WITH PASSWORD ‘bkppasswd’;

* мы создадим учетную запись bkpuser с паролем bkppasswd.

Предоставляем права на подключения к базе

=# GRANT CONNECT ON DATABASE database TO bkpuser;

* в данном примере к базе database.

Подключаемся к базе (в нашем примере database):

Даем права на все последовательности в схеме:

=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;

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

Графический интерфейс

Иногда проще воспользоваться программой для выставления прав и работы с PostgreSQL. Могу посоветовать приложение pgAdmin. Оно позволит в оконном режиме не только создать и удалить пользователей, но и полноценно работать с СУБД.

Источник

15 полезных команд PostgreSQL

как узнать логин postgresql. postgres tools. как узнать логин postgresql фото. как узнать логин postgresql-postgres tools. картинка как узнать логин postgresql. картинка postgres tools.

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

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

Получение информации о базе данных

Размер базы данных

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

current_database() — функция, которая возвращает имя текущей базы данных. Вместо неё можно ввести имя текстом:

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

Перечень таблиц

Иногда требуется получить перечень таблиц базы данных. Для этого используем следующий запрос:

information_schema — стандартная схема базы данных, которая содержит коллекции представлений (views), таких как таблицы, поля и т.д. Представления таблиц содержат информацию обо всех таблицах баз данных.

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

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

Размер таблицы

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

Функция pg_relation_size возвращает объём, который занимает на диске указанный слой заданной таблицы или индекса.

Имя самой большой таблицы

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

Для того, чтобы вывести информацию о самой большой таблице, ограничим запрос с помощью LIMIT :

relname — имя таблицы, индекса, представления и т.п.
relpages — размер представления этой таблицы на диске в количествах страниц (по умолчанию одна страницы равна 8 Кб).
pg_class — системная таблица, которая содержит информацию о связях таблиц базы данных.

Перечень подключенных пользователей

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

Активность пользователя

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

Работа с данными и полями таблиц

Удаление одинаковых строк

Если так получилось, что в таблице нет первичного ключа (primary key), то наверняка среди записей найдутся дубликаты. Если для такой таблицы, особенно большого размера, необходимо поставить ограничения (constraint) для проверки целостности, то удалим следующие элементы:

Рассмотрим таблицу с данными покупателей, где задублирована целая строка (вторая по счёту).

как узнать логин postgresql. postgre 01. как узнать логин postgresql фото. как узнать логин postgresql-postgre 01. картинка как узнать логин postgresql. картинка postgre 01.

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

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

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

7–9 сентября, Онлайн, От 12 000 до 30 000 ₽

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

как узнать логин postgresql. postgre 02. как узнать логин postgresql фото. как узнать логин postgresql-postgre 02. картинка как узнать логин postgresql. картинка postgre 02.

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

Если данные важны, то сначала нужно найти записи с дубликатами:

как узнать логин postgresql. postgre 03. как узнать логин postgresql фото. как узнать логин postgresql-postgre 03. картинка как узнать логин postgresql. картинка postgre 03.

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

Общая форма запроса на удаление описанных выше записей выглядит следующим образом:

Безопасное изменение типа поля

Но в результате выполнения получим ошибку:

ERROR: column “customer_id” cannot be cast automatically to type integer
SQL state: 42804
Hint: Specify a USING expression to perform the conversion.

В результате всё прошло без ошибок:

как узнать логин postgresql. postgre 04. как узнать логин postgresql фото. как узнать логин postgresql-postgre 04. картинка как узнать логин postgresql. картинка postgre 04.

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

В результате таблица примет следующий вид:

как узнать логин postgresql. postgre 05. как узнать логин postgresql фото. как узнать логин postgresql-postgre 05. картинка как узнать логин postgresql. картинка postgre 05.

Поиск «потерянных» значений

Будьте внимательны при использовании последовательностей (sequence) в качестве первичного ключа (primary key): при назначении некоторые элементы последовательности случайно пропускаются, в результате работы с таблицей некоторые записи удаляются. Такие значения можно использовать снова, но найти их в больших таблицах сложно.

как узнать логин postgresql. postgre 06. как узнать логин postgresql фото. как узнать логин postgresql-postgre 06. картинка как узнать логин postgresql. картинка postgre 06.

Рассмотрим два варианта поиска.

Первый способ
Выполним следующий запрос, чтобы найти начало интервала с «потерянным» значением:

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

Второй способ
Получаем имя последовательности, связанной с customer_id :

И находим все пропущенные идентификаторы:

Подсчёт количества строк в таблице

Общее количество строк в таблице:

Количество строк при условии, что указанное поле не содержит NULL :

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

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

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

Просмотр и завершение исполняемых запросов

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

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

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

Работа с конфигурацией

Поиск и изменение расположения экземпляра кластера

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

Изменим расположение на другое с помощью команды:

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

Получение перечня доступных типов данных

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

typname — имя типа данных.
typlen — размер типа данных.

Изменение настроек СУБД без перезагрузки

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

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

Источник

Sysadminium

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

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

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

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

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

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

как узнать логин postgresql. image 3. как узнать логин postgresql фото. как узнать логин postgresql-image 3. картинка как узнать логин postgresql. картинка image 3.Метод аутентификации trast (alex@deb:

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

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

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

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

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

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

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

как узнать логин postgresql. image 4. как узнать логин postgresql фото. как узнать логин postgresql-image 4. картинка как узнать логин postgresql. картинка image 4.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 покажет ошибку.

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

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

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

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

Адрес узла:

Имя роли:

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

Пароль в СУБД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Управление пользователями PostgreSQL

Для доступа к базам данных в кластере создаются пользователи.

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

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

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

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

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

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

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

Доступ к базам данных

Выдача доступа пользователю

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

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

Изменение владельца базы данных

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

Чтобы изменить владельца, в панели управления:

Удаление доступа для пользователя

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

Выдача и отзыв привилегий у пользователя

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

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

Выдача привилегий пользователю

Пример выдачи доступа на чтение ( SELECT ) к таблице table пользователю user :

Подробное описание синтаксиса команды в документации PostgreSQL.

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

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

Для создания пользователя схемы с правами только на чтение (read-only) создайте пользователя и подключитесь к базе данных.

Затем создайте схему и таблицу:

Отзыв привилегий у пользователя

Пример отзыва привилегии у пользователя user на схему schema :

Источник

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

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