【问题标题】:postgres: Grant access to my windows userpostgres:授予对我的 Windows 用户的访问权限
【发布时间】:2015-12-03 21:14:47
【问题描述】:

我正在尝试在 Windows 10 计算机中设置本地数据库,并向我的本地 Windows 用户授予访问权限。但是当我尝试通过我的节点应用程序访问数据库时,我收到以下错误消息:error: password authentication failed for user "windowsuser" 使用以下 db-url:postgres://localhost:5432/testdb

我正在使用模块“pg”连接到数据库,当我在 URL 中指定用户名和密码时一切正常 - 但我想使用我的 Windows 凭据进行连接。

我已经设置了一个与我的 windowsuser 同名的超级用户:

CREATE ROLE windowsuser LOGIN
    SUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION;

并将数据库 windowsuser 设置为所有者:

CREATE DATABASE testdb
    WITH OWNER = windowsuser
        ENCODING = 'UTF8'
        TABLESPACE = pg_default
        LC_COLLATE = ''
        LC_CTYPE = ''
        CONNECTION LIMIT = -1;
GRANT ALL ON DATABASE testdb TO windowsuser;

windows 用户没有密码,我希望能够使用当前系统用户登录。我是否遗漏了一些重要的东西来获得正确的访问权限?

【问题讨论】:

  • 更新帖子:使用node和pg连接数据库。实际用户名全小写,在代码示例中修复。
  • 这是我帖子中的一个错误 :) 它已修复。它在实际代码和错误消息中都是小写的。但是,当我用匿名名称替换帖子中的名称时,我弄乱了大小写。对此感到抱歉。
  • 你为什么把密码留空。使用密码创建角色 windowsuser。
  • 在这种情况下,当在节点应用程序中使用没有用户名和密码的 DB-url 时,它能够“正常工作”的密码是多少?我尝试分配与本地 Windows 用户相同的密码 - 但这似乎不起作用。

标签: node.js postgresql


【解决方案1】:

我相信您不能简单地在没有密码的情况下进行身份验证。在这里查看 PostgreSQL 文档: PostgreSQL: Documentation: 9.4: Authentication Methods

您需要设置“信任验证”而不是“密码验证”。

19.3.2。密码验证
“PostgreSQL 数据库密码与操作系统用户密码是分开的。每个数据库用户的密码存储在 pg_authid 系统目录中。可以使用 SQL 命令 CREATE USER 和 ALTER ROLE 管理密码,例如,CREATE USER foo WITH PASSWORD 'secret' . 如果没有为用户设置密码,则存储的密码为空,该用户的密码验证将始终失败。"

您选择使用 Windows 系统帐户以及没有密码是否有特定原因?

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多