使用node-postgress连接到PostgreSQL@localhost时遇到困难(错误:28000)

liwlm1x9  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(150)

我目前在rPi 3B+(aarch 64)上运行openSuse,运行NodeJS连接脚本时遇到了瓶颈。
我完成了PostgreSQL的标准安装(v10是这个版本的openSUSE提供的),然后创建了一个新角色,

CREATE ROLE new_role LOGIN PASSWORD 'passwd';

字符串
然后是一个db,

CREATE DATABASE new_db OWNER new_role;


\l\du都返回预期的输出,表明角色和数据库都已成功创建,拥有正确的所有者。
因此,我很快创建了一个节点项目目录,并从文档https://node-postgres.com/features/connecting中复制了测试脚本

const { Pool, Client } = require('pg')
const connectionString = 'postgresql://new_role:passwd@localhost:5432/new_db'

const pool = new Pool({
  connectionString: connectionString,
})

pool.query('SELECT NOW()', (err, res) => {
  console.log(err, res)
  pool.end()
})

const client = new Client({
  connectionString: connectionString,
})
client.connect()

client.query('SELECT NOW()', (err, res) => {
  console.log(err, res)
  client.end()
})


这将返回一些我还没有正确捕获的broken promise错误(.cath()),以及一个错误代码28000,如下所示:

{ error: Ident authentication failed for user "new_role"
at Connection.parseE (/home/eru/postgresDB/node_modules/pg/lib/connection.js:554:11)
at Connection.parseMessage (/home/eru/postgresDB/node_modules/pg/lib/connection.js:379:19)
at Socket.<anonymous> (/home/eru/postgresDB/node_modules/pg/lib/connection.js:119:22)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:283:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  name: 'error',
  length: 99,
  severity: 'FATAL',
  code: '28000',
  detail: undefined,
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'auth.c',
  line: '328',
  routine: 'auth_failed' } undefined


所以我很确定这个尝试成功到达了预期的端口,否则我不会在终端中收到详细的错误。错误代码= invalid_authorization_specification
我需要在服务器上做些什么,psql接口,才能满足授权规范吗?
当我调查了那个具体的问题后,我似乎找不到与我的情况相关的有用的搜索结果。
这里的postgres相当新,所以我敢肯定这是一个相当菜鸟的错误,我错过了,但任何帮助或输入是非常感谢!

pxq42qpu

pxq42qpu1#

在这里稍微挖掘一下后找到了答案:error: Ident authentication failed for user
最终将pg_hba.conf从ident方法编辑为md5
这是相当粗糙的,因为我真的不明白我改变了什么,除了告诉PostgreSQL检查md5加密的密码,而不是检查我的用户名是否匹配服务器上创建的角色。
如果有人能解释为什么我洗耳恭听。

相关问题