Я хочу создать пользователя, у которого только есть доступ к указанной базе данных. Однако это должно иметь все разрешение. Я использую Postgresql 9.5 на Ubuntu 14.04. Таким образом, в первую очередь, я создаю нового пользователя:
$createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Затем я создаю новую базу данных с владельцем joe:
$sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
После этого я пытаюсь соединиться с пользователем joe для соединения на моей базе данных myDB:
$psql myDB -U joe
psql: FATAL: Peer authentication failed for user "joe"
Что я должен сделать затем?
Открывают /etc/postgresql/9.5/main/pg_hba.conf
с корневым доступом
sudo nano /etc/postgresql/9.5/main/pg_hba.conf
Изменение peer
к md5
в этих строках.
Прежде, чем измениться
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 peer
# IPv6 local connections:
host all all ::1/128 peer
После Вашего изменения
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Сохранили файл с нажатием Ctrl - O . Выйдите из нано с Ctrl - Перезапуск X
postgresql использование
sudo service postgresql restart