win32中的PostgreSql:postgres密码

时间:2011-05-23 18:37:27

标签: postgresql

我有一个用户帐户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

我使用Windows安装程序安装PostgreSql(双击并安装:-))。它要求输入一个不起作用的密码:(。我应该丢失什么?

2 个答案:

答案 0 :(得分:3)

使用One-Click Installer创建了两个不同的东西:

  • Windows帐户和“服务帐户”(一个拥有postgresql.exe进程)
  • PostgreSQL(数据库)超级用户角色

两个帐户的默认名称是(传统上)postgres。安装完成后,您可以使用net user命令检查新创建的Windows帐户:

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),那么你可以使用(假设你已经在PATH中有PostgreSQL \ version \ bin并且你被记录为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 :(得分:1)

IIRC,Windows安装程序创建了两个“用户”。其中一个是PostgreSQL服务帐户,通常有一个密码的随机字符串。另一个是用户“postgres”,它出现在Windows控制面板的“用户帐户”小程序中。

两种最有可能的可能性。 。

  1. 您没有为Windows用户“postgres”获得正确的密码。

  2. 您实际上是尝试使用PostgreSQL的默认登录名创建数据库,这是您的Windows网络用户名。

  3. psql utility有一个-U选项,可让您指定所需的用户名。