我有一个用户帐户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(双击并安装:-))。它要求输入一个不起作用的密码:(。我应该丢失什么?
答案 0 :(得分:3)
使用One-Click Installer创建了两个不同的东西:
两个帐户的默认名称是(传统上)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控制面板的“用户帐户”小程序中。
两种最有可能的可能性。 。
您没有为Windows用户“postgres”获得正确的密码。
您实际上是尝试使用PostgreSQL的默认登录名创建数据库,这是您的Windows网络用户名。
psql utility有一个-U选项,可让您指定所需的用户名。