我正在尝试在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用户没有密码,我希望能够只使用当前系统用户登录。我错过了一些必要的东西来获得适当的访问权限吗?
答案 0 :(得分:0)
我相信如果没有密码,您无法简单地进行身份验证。在这里看一下PostgreSQL文档: PostgreSQL: Documentation: 9.4: Authentication Methods
您需要设置"信任身份验证"而不是"密码验证"。
<强> 19.3.2。密码验证
&#34; PostgreSQL数据库密码与操作系统用户密码分开。每个数据库用户的密码都存储在pg_authid系统目录中。可以使用SQL命令CREATE USER和ALTER ROLE来管理密码,例如,CREATE USER foo WITH PASSWORD&#39; secret&#39;。 如果没有为用户设置密码,则存储的密码为空,并且该用户的密码验证将始终失败。&#34;
您选择使用Windows系统帐户以及没有密码的具体原因是什么?