即使 .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)
我假设您在使用 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 对我有用。
当我使用 PostgreSQL 的默认密码时,我遇到了同样的问题。尝试从命令行更改它,如下所示。
psql
\password
然后输入新密码并更新您的
.env
文件,这样就可以了。
我没有使用
process.env
变量,而是使用实际名称,但用引号 (" ") 括起来,并且它有效。
当我连接 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
文件中添加方言属性。
现在问题解决了...谢谢
我也有同样的错误,但我通过使用模板字符串解决了它
const sequelize = new Sequelize(`${process.env.DB_NAME}`, `${process.env.DB_USER}`, `${process.env.DB_PASSWORD}`, {
host: process.env.DB_HOST,
dialect: 'postgres'
});
如果您正在使用 postgres+docker,并且代码中的所有内容看起来都很好,并且没有一个答案能够解决您的问题。你已经检查了所有的sequelize配置,没有什么可以出错的..
只需检查一下本地是否有 postgres 服务正在运行。 执行
sudo systemctl stop postgres*
这将能够解决你的 auth failed
和相关的 Sequelize 错误。
将配置键“用户”更改为“用户名”对我有用。
用户:envVars.SQL_USERNAME 到 用户名:envVars.SQL_USERNAME