PostgreSql в win32: пароль postgres - PullRequest
3 голосов
/ 23 мая 2011

У меня есть учетная запись пользователя mayank.Я сделал initdb для создания нового кластера.
У меня есть PGDATA=C:\pgdata.Теперь я хочу создать новый БД.

Когда я делаю createdb db_test, он запрашивает пароль.Какой пароль требуется там.

У меня есть следующая запись в pg_hba.conf

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Я установил PostgreSql с помощью установщика Windows (дважды щелкните и установите :-)).Он попросил пароль, который не работает здесь :(. Что я должен пропустить?

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Использование Установщик в один клик создаются две разные вещи:

  • Учетная запись Windows и «учетная запись службы» (которой принадлежит процесс postgresql.exe)
  • Роль суперпользователя PostgreSQL (базы данных)

Имя по умолчанию для обеих учетных записей (традиционно) postgres.После установки вы можете проверить вновь созданную учетную запись Windows, используя команду net user:

net user            postgres
User name           postgres
Full name           postgres
Comment             PostgreSQL service account
...
Active              Yes
Password required   Yes
...

. Вы можете использовать psql для подключения к одной из исходных баз данных с учетной записью суперпользователя и проверить все кластер-определенныеРоли в кластере по умолчанию:

postgres=# \du
                       List of roles
 Role name |            Attributes             | Member of
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}

Если вы хотите создать новый кластер базы данных в качестве суперпользователя mayank (и владельца кластера mayank), то вы можете использовать (при условии, что у вас уже есть PostgreSQL \ version \ bin в PATH, и выВы зарегистрированы как Mayank):

cmd>initdb -U mayank -D C:\pgdata
cmd>pg_ctl -D C:\pgdata -o "-p 5440" -l C:\pgdata\log start
cmd>createdb -p 5440 test

У меня это работает просто хорошо без запроса пароля.Я только что проверил C:\pgdata\pg_hba.conf, и он действительно содержит:

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Это хорошо, но не безопасно в многопользовательской среде.Вы можете использовать pg_ctl для запуска postmaster в качестве службы Windows (точно так же, как кластер по умолчанию 5432 БД), поэтому вы можете использовать mayank как «учетную запись службы».

1 голос
/ 23 мая 2011

IIRC, установщик Windows создает двух «пользователей». Одной из них является учетная запись службы PostgreSQL, которая обычно содержит произвольную строку для пароля. Другой пользователь - postgres, который появляется в апплете «Учетные записи пользователей» панели управления Windows.

Две наиболее вероятные возможности. , .

  1. Вы не можете получить правильный пароль для пользователя Windows "postgres".

  2. На самом деле вы пытаетесь создать базу данных, используя имя входа по умолчанию для PostgreSQL, которое является вашим именем пользователя в сети Windows.

Утилита psql имеет опцию -U, которая позволяет указать желаемое имя пользователя.

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