Ошибка при создании базы данных в postgres - PullRequest
0 голосов
/ 12 мая 2011

Я хочу создать пользователя и базу данных на сервере Linux. Я могу создать пользователя со следующим кодом:

su - postgres
# createuser -S -D -R myUser

но когда я пытался создать базу данных с кодом:

# createdb -U myUser -p 5432 myDatabase

Я получаю следующую ошибку:

createdb: could not connect to database postgres: FATAL:  Ident authentication failed for user "myUser"

Я новичок в Linux, поэтому не могу понять, почему мне удалось создать пользователя, но при создании базы данных возникает ошибка соединения с postgres. А также ошибка для идент аутентификация для пользователя.

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Я новичок в 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», в зависимости от ОС и метода установки.

0 голосов
/ 12 мая 2011

См. Например: эта ссылка

Пожалуйста, воспользуйтесь поиском Google по фразе, которую вы дали ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...