Win32 : postgres password 中的 PostgreSql

标签 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(双击并安装 :-))。它要求输入一个在这里不起作用的密码:(。我应该遗漏什么?

最佳答案

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

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

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

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

您可以使用 psql 连接到具有 super 用户帐户的初始数据库之一,并检查集群定义的默认集群中的所有角色:

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

如果你想以 super 用户 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 register 将 postmaster 作为 Windows 服务运行(就像默认的 5432 DB 集群一样),因此您也可以将 mayank 作为“服务帐户”。

关于Win32 : postgres password 中的 PostgreSql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101392/

相关文章:

sql - PostgreSQL 中的窗口函数

postgresql - 错误 : function dblink(unknown, 未知)不存在

sql - 如何在 sql 层次结构上显示祖 parent ?

postgresql - 将 json 数组元素插入表中的函数

sql - PostgreSQL 中的外键匹配

java - 更新查询后获取结果

Python psycopg2 PostgreSQL 尝试解除分配

postgresql - Kubernetes 上带有 Pgbouncer 的 Npgsql - 池化和保活

sql - 返回两个表中都存在日期时间的查询

sql - postgresql函数错误: column name does not exist