首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我的数据库没有密码时,为什么Knex.js在密码身份验证上失败?

当我的数据库没有密码时,为什么Knex.js在密码身份验证上失败?
EN

Stack Overflow用户
提问于 2020-01-19 00:10:13
回答 1查看 695关注 0票数 0

我正试图使用Knex连接到数据库,如下所示:

代码语言:javascript
运行
复制
const client = knex({
  client: 'postgresql',
  connection: {
    host: '127.0.0.1',
    user: 'me',
    database: 'my_db'
  }
});
client('some_table').then(console.log);

当我创建数据库时(在命令行使用createdb my_db ),我没有设置密码。在命令行,我可以运行psql -d my_db,它运行得很好。

然而,当我尝试使用Knex时,我会得到一个错误:

未处理的拒绝错误:用户"me“密码身份验证失败

无论是设置null密码、空字符串('')密码,还是将字段完全排除在配置之外,都会发生这种情况。

有谁能解释一下为什么康耐视坚持不通过密码认证.当没有密码时(当我可以在命令行没有密码的情况下连接时)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-19 07:58:32

PostgreSQL不允许基于密码的存在或缺失进行登录。相反,所有登录身份验证都是通过pg_hba.conf处理的。在您的特殊情况下--创建没有密码的me用户(或者使用null'',正如您所描述的那样)--没有密码并不一定允许用户登录。事实上,不设置密码将不允许该用户登录,除非pg_hba.conf被设置为无密码设置(即peertrust)。

如果您想要me用户的无密码登录(我假设出于测试/开发目的,因为在生产中使用无密码登录并不是一个好的安全实践),您可以简单地在pg_hba.conf中设置trust-level身份验证。

代码语言:javascript
运行
复制
#conn_origin  database  user  ip_mask   auth_method
host          all       me    0.0.0.0/0 trust

实现无密码身份验证的更安全的方法是使用.pgpass文件或设置PGPASSWORD环境变量。考虑到您正在尝试使用knex.js,您最好按上面的方式调整pg_hba.conf。再说一遍,我不知道你的意图是什么,但请在那里安全;)

披露:我为EnterpriseDB (EDB)工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59806028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档