Я хочу создать пользователя, который имеет доступ только к указанной базе данных. Однако, он должен иметь все разрешения. Я использую 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
Далее я создаю новую базу данных с владельцем Джо:
$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"
Что мне делать дальше?
решение1
Открыть
/etc/postgresql/9.5/main/pg_hba.conf
с правами rootsudo 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. Выйдите из nano, нажав Ctrl-X
Перезапустите postgresql с помощью
sudo service postgresql restart