我目前在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相当新,所以我敢肯定这是一个相当菜鸟的错误,我错过了,但任何帮助或输入是非常感谢!
1条答案
按热度按时间pxq42qpu1#
在这里稍微挖掘一下后找到了答案:error: Ident authentication failed for user
最终将pg_hba.conf从
ident
方法编辑为md5
这是相当粗糙的,因为我真的不明白我改变了什么,除了告诉PostgreSQL检查md5加密的密码,而不是检查我的用户名是否匹配服务器上创建的角色。
如果有人能解释为什么我洗耳恭听。