LINUX.ORG.RU

Как войти под пользователем в postgresql?

 ,


2

1

подскажите пожалуйста как залогиниться в postgresql под новым пользователем.

Я установил postgres9. далее работаю с ним через командную строку. я хотел бы создать пользователя postgres и работать под ним, а не под суперпользователем. Для этого я зашел в postgres под суперпользователем:

sudo -u postgres psql

и создал нового пользователя, новую БД, дал права пользователю на эту БД:

postgres=# CREATE USER user1 WITH PASSWORD 'qwerty1';
CREATE ROLE
postgres=# CREATE DATABASE database1;
CREATE DATABASE
postgres=# GRANT ALL PRIVILEGES ON DATABASE database1 to user1;
GRANT

результат:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 database1 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =Tc/postgres         +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | user1=CTc/postgres

затем в соответствии с документацией я добавил в файл

/etc/postgresql/9.5/main/pg_hba.conf

строку:

local database1 user1 trust

и перезапустил postgreql чтобы изменения вступили в силу:

(ven) md@md ~/.MINT18/code/python/project0/ven/bin $ sudo service postgresql restart
(ven) md@md ~/.MINT18/code/python/project0/ven/bin $ sudo service postgresql start
(ven) md@md ~/.MINT18/code/python/project0/ven/bin $ psql -U user1 database1
psql: FATAL:  Peer authentication failed for user "user1"

как видите, войти не получилось. а хотелось бы…


Если я не путаю, то пользователь postgres при установке создаётся в системе.

Так что создайте в Linux вашего пользователя user1.

Но я могу ошибаться.

anonymous
()

Пользователь `postgres` и есть суперпользователь.

AnDoR ★★★★★
()

добавил в файл

Если у вас там до этого есть запись вида:

local all all peer

то она перекрывает вашу запись (trust).

mky ★★★★★
()
Ответ на: комментарий от anonymous

к сожалению не получается и так. я создал в ОС пользователя user1. соответствующая запись появилась в /etc/passwd:

user1:x:1001:1001:,,,:/home/user1:/bin/bash

но зайти по прежнему не получается:

md@md /etc/postgresql/9.5/main $ sudo service postgresql start
md@md /etc/postgresql/9.5/main $ psql -U user1 database1
psql: FATAL:  Peer authentication failed for user "user1"

prozaik
() автор топика
Ответ на: комментарий от mky

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

md@md /etc/postgresql/9.5/main $ sudo service postgresql restart
md@md /etc/postgresql/9.5/main $ psql -U user1 database1
psql (9.5.19)
Type "help" for help.

меня только беспокоит правильное ли это решение и не вылезет ли где-нибудь потом побочный эффект? например, в виде дыры в безопасности

prozaik
() автор топика
Последнее исправление: prozaik (всего исправлений: 4)
Ответ на: комментарий от prozaik

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

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

так как postgreql я установил только час назад и ничего с ним кроме вышеописанного не делал, то наверное нет - не цепляются

prozaik
() автор топика
Последнее исправление: prozaik (всего исправлений: 1)
Ответ на: комментарий от prozaik

Ну trust это для всех. То есть любой пользователь теперь может под user1 к database1 подключаться. Я не знаю, насколько это безопасно в ваших условиях.

postgreql я установил только час

Ну тогда у вас много времени почитать про методы авторизации в pg_hba.conf...

mky ★★★★★
()
Ответ на: комментарий от prozaik

Кстати, да, как тебе уже сказал mky, если не хочешь, чтобы кто попало локально мог ходить под user1, тебе нужно поменять trust на password (или md5). Либо верни как было и пробуй зайти так: sudo -u user1 psql. peer — это способ входа от системного пользователя, будучи залогиненым с него, что и даёт тебе sudo -u. mky тебе это выше тоже уже сказал, то но ты, видимо, не понял.

WitcherGeralt ★★
()
Ответ на: комментарий от prozaik

. я создал в ОС пользователя user1. соответствующая запись появилась в /etc/passwd:

не нужно. Пользователи PostgreSQL не имеют отношения к пользователям Mint.

Partisan ★★★★
()
Ответ на: комментарий от Partisan

я уже понял. но у меня вызвало сомнение то, что после установки postgresql в /etc/passwd создаётся пользователь

postgres:x:123:132:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

вот я и подумал, что пользователи ОС и БД связаны

prozaik
() автор топика
Ответ на: комментарий от Deleted

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

prozaik
() автор топика
Последнее исправление: prozaik (всего исправлений: 1)
Ответ на: комментарий от prozaik

та же беда, книжку купил. осваиваюсь.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.