Я новичок в Linux, поэтому не могу понять, почему мне удалось создать пользователя, но при создании базы данных возникает ошибка соединения с postgres.А также ошибка идентификации пользователя для аутентификации.
ид. - это схема аутентификации, основанная на зарегистрированном в данный момент пользователе .Если вы выполняете su-s для postgres, а затем пытаетесь войти в систему как другой пользователь, Identif не будет работать (так как это не зарегистрированный пользователь).Вы можете решить эту проблему двумя способами, я предпочитаю использовать последнее.
решение : просто убедитесь, что вошедший в систему пользователь - это пользователь, с которым вы хотите войти в системуpostgres:
postgres@machine:~$ createuser -S -D -R myUser
postgres@machine:~$ exit
machine:~# su - myUser
myUser@machine:~$ psql myDatabase
лучшее решение : измените pg_hba.conf (возможно, находится в /etc/postgresql/8.4/main/ или аналогичный) и убедитесь, что вы добавили «md5»Схема аутентификации в списке опций.Вот мой pg_hba.conf на моем блоке разработки, без комментариев:
berry@berry-pc:~$ sudo cat /etc/postgresql/8.4/main/pg_hba.conf | grep -v "^#" | grep -v "^$"
local all postgres ident
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Это говорит PostgreSQL, что postgres может войти в систему с ident , а все остальные пользователи могут войти в систему, используя аутентификацию md5.Таким образом, вы можете использовать ключ -U к двоичному файлу psql, чтобы указать, каким пользователем вы хотите стать, так что на самом деле это работает:
berry@berry-pc:~$ psql -U myUser myDatabase.
Тем не менее, я склонен использовать суперпользователя postgres для создания баз данных.,Затем я предоставляю разрешения для вновь созданной базы данных только что созданному пользователю:
postgres@debian:~$ psql template1
template1=# CREATE USER myUser WITH PASSWORD 'myPassword';
CREATE ROLE
template1=# CREATE DATABASE myDatabase;
CREATE DATABASE
template1=# GRANT ALL PRIVILEGES ON DATABASE myDatabase TO myUser;
GRANT
template1=# \q
Надеюсь, это поможет.
ADDENDUM : После того, как вы изменилиpg_hba.conf, вам придется перезапустить сервер PostgreSQL, чтобы убедиться, что он снова считывает конфигурацию.Вы можете сделать это, введя эту команду:
root@debian:~$ /etc/init.d/postgresql-8.4 restart
Сценарий может называться «postgresql» вместо «postgresql-8.4», в зависимости от ОС и метода установки.