Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Как получить доступ к postgres консоли в linux?

Я установил PostgresSQL на linux и когда я пытаюсь войти то получаю:
$ psql postgres psql: FATAL: role "pavel" does not exist
На MacOS у меня была отдельная консоль для postgres которая устанавливалась по умолчанию вместе с базой. Для linux нет такой возможности?
Почему мне не предлагается выбрать роль?
Как мне войти в базу?


Ответ

$ psql postgres
Означает, что вы хотите авторизоваться с настройками по-умолчанию в базу postgres. Не пользователем postgres, а в базу данных под названием postgres. Пользователь указывается явно ключом -U либо записывается в переменной окружения PGUSER либо используется тот, от имени которого открыта консоль. Очевидно pavel - это имя вашей учётной записи.
Поэтому при работе от пользователя postgres в базу postgres зайти можно (это не значит что всегда можно будет зайти, можно настроить что и нельзя будет).
psql -U postgres postgres
Так же на настройках по-умолчанию используется unix-сокет и авторизация peer в pg_hba.conf. Т.е. проверяется, что пользователь, от имени которого работает консоль совпадает с именем пользователя в базе. Т.е. указанная выше команда не сработает и выдаст ошибку peer-аутентификации. Понадобится править pg_hba.conf, например, для использования md5 авторизации - с использование пароля.
Если вы хотите часто заходить в консоль суперпользователем, то проще завести пользователя совпадающего с именем в консоли, нежели указывать постоянно пользователя и базу
create user pavel with superuser login password 'пароль'; create database pavel owner pavel;
После вы сможете заходить просто набрав
psql
Если же вам не нужна постоянно административная консоль (а зачем она может быть постоянно нужна, если только вы не ДБА?), то уберите superuser из создания пользователя. Для редких административных задач вполне достаточно способа авторизации через
sudo -u postgres psql postgres

Комментариев нет:

Отправить комментарий