Назад | Перейти на главную страницу

Получена ошибка при создании базы данных в postgres

Я хочу создать пользователя и базу данных на сервере 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. А также ошибка аутентификации идентификатора для пользователя.

вы должны добавить настройку аутентификации на свой

~ postgres / ВЕРСИЯ / данные / pg_hba.conf

e.g: for localhost
host    all             all             127.0.0.1/32            ident

e.g: full conf:
local   all             all                                     ident
host    all             all             127.0.0.1/32            ident
host    all             myUser          127.0.0.1/32            ident

затем перезагрузите postgres

Вам нужно узнать больше о конфигурации HBA.

Есть несколько основных методов аутентификации:

  • доверять - каждый пользователь может подключиться к базам данных, указанным во втором столбце, где все означает только все базы данных в кластере (да, исключая template0, потому что для datallowconn в системном каталоге pg_database установлено значение false .. неважно)
  • идентификатор (до PostgreSQL 8.4 идентификатор sameuser) - только фактически зарегистрированный (например, используя su в консоли как ваш su - postgres) системный пользователь (имя которого совпадает с именем роли) может подключиться
  • мкр5 - каждый пользователь, который знает пароль роли (PostgreSQL), может войти в базу данных

Каждый раз, когда вы пытаетесь подключиться к бетону роль и база данных даже если не пишите явно.

Обычно бывает два типа подключения:

  • местный - сокеты Unix-домена
  • хозяин - используя TCP / IP соединение

Если вы не знаете, что используете, то это местное. Чтобы использовать соединение TCP / IP, вам необходимо указать параметр -h с целевым IP-адресом, который прослушивает postmaster. Например, вы можете добавить -h localhost или -h 127.0.0.1, но проверьте свойство listen_adresses (значение AFAIK по умолчанию - localhost, так что все в порядке) в postgresql.conf и принятый IP-адрес (а) клиента в HBA.

http://www.postgresql.org/docs/9.0/static/auth-pg-hba-conf.html