未处理的拒绝 SequelizeConnectionError:用户“ankitj”的密码身份验证失败

问题描述 投票:0回答:7

即使 .env 文件中指定的数据库用户不同,也会发生这种情况。根据记录,“ankitj”也是我系统的用户名。我不明白为什么会这样。

错误如下:

Unhandled rejection SequelizeConnectionError: password authentication failed for user "ankitj"
    at connection.connect.err (/home/ankitj/Desktop/skillbee/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:128:24)
    at Connection.connectingErrorHandler (/home/ankitj/Desktop/skillbee/node_modules/pg/lib/client.js:140:14)
    at Connection.emit (events.js:160:13)
    at Socket.<anonymous> (/home/ankitj/Desktop/skillbee/node_modules/pg/lib/connection.js:124:12)
    at Socket.emit (events.js:160:13)
    at addChunk (_stream_readable.js:269:12)
    at readableAddChunk (_stream_readable.js:256:11)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onread (net.js:599:20)
node.js postgresql sequelize.js
7个回答
7
投票

我假设您在使用 Sequelize 和 Node.js 时遇到此错误。当我遇到以下问题时,我遇到了同样的错误:

const sequelize = new Sequelize(
  process.env.DATABASE,
  process.env.DATABASE_USER,
  process.env.DATABASE_PASSWORD,
  {
    dialect: 'postgres',
  }
)

我能够通过将其替换为连接 ur:

来解决该问题
const sequelize = new Sequelize("postgres://postgres:postgres@localhost/gql", {
  dialect: 'postgres'
  // anything else you want to pass
})

其中

gql
是我的
DATABASE
文件中
.env
的名称。

用户“ankitj”执行命令来运行 Node 脚本,因此该脚本尝试以该用户身份进行连接。我首先尝试通过添加用户并授予权限来在 Postgres 端解决此问题,但无法使其正常工作——我有兴趣查看该解决方案——但指定一个连接 url 对我有用。


5
投票

当我使用 PostgreSQL 的默认密码时,我遇到了同样的问题。尝试从命令行更改它,如下所示。

  1. psql
  2. \password

然后输入新密码并更新您的

.env
文件,这样就可以了。


0
投票

我没有使用

process.env
变量,而是使用实际名称,但用引号 (" ") 括起来,并且它有效。


0
投票

当我连接 NodeJS 和 Postgres SQL 时,我也遇到了同样的问题。我找到了解决方案。我们需要检查

db.config.js
文件(数据库配置文件)和index.js(其中你调用的
const sequelize = new Sequelize(.......)
属性名称是否匹配。

// db.config.js
module.exports = {
    user: '******',
    host: 'localhost',
    database: '***********',
    password: '***',
    port: 5432,
    dialect: "postgres", // we need to implement 
    pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000
    }
};

const Sequelize = require("sequelize");
const dbConfig = require("../config/db.config.js");

const sequelize = new Sequelize(dbConfig.database, dbConfig.user, dbConfig.password, {
    host: dbConfig.host,
    dialect: dbConfig.dialect,
    operatorsAliases: false,

    pool: {
        max: dbConfig.pool.max,
        min: dbConfig.pool.min,
        acquire: dbConfig.pool.acquire,
        idle: dbConfig.pool.idle
    },
})

提到上面的参数行为(dbConfig.database,dbConfig.user,dbConfig.password)我们需要检查db.config.js文件

注意:请在

db.config.js
文件中添加方言属性。

现在问题解决了...谢谢

控制台语言日志


0
投票

我也有同样的错误,但我通过使用模板字符串解决了它

const sequelize = new Sequelize(`${process.env.DB_NAME}`, `${process.env.DB_USER}`, `${process.env.DB_PASSWORD}`, {
  host: process.env.DB_HOST,
  dialect: 'postgres'
});

0
投票

如果您正在使用 postgres+docker,并且代码中的所有内容看起来都很好,并且没有一个答案能够解决您的问题。你已经检查了所有的sequelize配置,没有什么可以出错的..

只需检查一下本地是否有 postgres 服务正在运行。 执行

sudo systemctl stop postgres*
这将能够解决你的
auth failed
和相关的 Sequelize 错误。


0
投票

将配置键“用户”更改为“用户名”对我有用。

用户:envVars.SQL_USERNAME 到 用户名:envVars.SQL_USERNAME

© www.soinside.com 2019 - 2024. All rights reserved.