首页 > 解决方案 > 如何使用我的默认 Windows 用户名连接到 PostgreSQL

问题描述

我已经阅读了多个帖子,他们无法连接到 postgres 默认用户。

但是,在我的情况下,我可以postgres毫无问题地连接到用户,但我无法使用我的默认 Windows 用户登录。当我使用 SQL Shell 时,它只会让我登录到 postgres 用户。

Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]: maximilian
Password for user maximilian:
psql (12.1)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.
postgres=#         ----> As you can see still logged in as postgres user

我在 postgres 中设置为用户,如下所示:

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

如果我想使用 CMD 命令提示符psql- 默认用户是Maximilian并且在输入我的密码时返回错误。

C:\Users\Maximilian>psql --help

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "Maximilian")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

psql: error: could not connect to server: FATAL:  password authentication failed for user "Maximilian"

psql在我创建该角色/用户之前已被识别Maximilian为默认用户maximilian 在我在 postgres 中

非常感谢任何帮助!

标签: postgresqlauthenticationpsql

解决方案


大小写在 PostgreSQL 中很重要,即使 SQL 是大小写折叠,除非引用。

数据库用户是maximilian,但操作系统用户是Maximilian

您可以重命名用户:

ALTER ROLE maximilian RENAME TO "Maximilian";

但是“引用”,混合大小写标识符是一个真正的坏主意。

所以我建议您将环境变量设置PGUSERmaximilian,那么这将是默认用户名。

顺便说一句:提示postgrespsql的不是用户名,而是您连接的数据库。


推荐阅读