[英]password authentication failed for user "root", postgresSQL and docker
[英]Linux - NodeJS, Express, PostgreSQL - ErrorHandler: password authentication failed for user "root"
編輯 -
成功! 看來我應該有RTFM
。 使用環境變量似乎需要與手冊完全一致。
固定代碼:
# PostgreSQL Database Infomation
PGDATABASE_TEST = user_db
PGDATABASE = user_db
PGUSER = postgres
PGPASSWORD = password
# PostgreSQL Host and Port Infomation
PGHOST = localhost
PGPORT = 5432
--
我正在使用.env
變量連接到 Postgres 數據庫。
通過 Postman 向 Express API 提交數據時,我收到一條錯誤消息,說明如下:
throw new ErrorHandler(error.statusCode, error.message)
^
ErrorHandler: password authentication failed for user "tito"
at UserService.createUserAccount (/home/tito/Documents/GitHub/***/server/services/user.service.js:11:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async createUserAccount (/home/tito/Documents/GitHub/***/server/controllers/user.controller.js:11:18) {
status: 'error',
statusCode: undefined
}
如您所見,它使用我的操作系統用戶名而不是.env
設置一個。 使用sudo
運行節點時,出現root
的身份驗證錯誤。
我的db.js
:
require("dotenv").config();
const { Pool } = require("pg");
// Check which Database to use. Live is safe.
const isProduction = process.env.NODE_ENV === 'PRODUCTION';
const database = process.env.NODE_ENV === 'TEST' ? process.env.PG_TEST_DATABASE : process.env.PG_DATABASE;
// Request to Database contructed
const connectionString = `postgresql://${process.env.PG_USER}:${process.env.PG_PASS}@${process.env.PG_HOST}:${process.env.PG_PORT}/${database}`;
// Setup Pool.
const pool = new Pool ({
connectionString: isProduction ? process.env.DATABASE_URL : connectionString,
ssl: isProduction ? { rejectUnauthorized: false } : false
});
console.log(`Ready at : ${connectionString}`)
module.exports = {
query: (text, params) => pool.query(text, params),
end: () => pool.end()
}
我的.env
:
# Express API Port.
PORT = 5000
# Enviroment - TEST for local. PRODUCTION for live.
NODE_ENV = PRODUCTION
# PostgreSQL Database Infomation
PG_TEST_DATABASE = user_db
PG_DATABASE = user_db
PG_USER = postgres
PG_PASS = password
# PostgreSQL Host and Port Infomation
PG_HOST = localhost
PG_PORT = 5432
我的UserService
:
const {
createUserAccount_DB
} = require("../db/user.db");
const { ErrorHandler } = require("../helpers/error")
class UserService {
createUserAccount = async (user) => {
try {
return await createUserAccount_DB(user);
} catch (error) {
throw new ErrorHandler(error.statusCode, error.message)
}
}
}
module.exports = new UserService();
我的createUserAccount
:
const userService = require("../services/user.service");
const { ErrorHandler } = require("../helpers/error");
const createUserAccount = async (req, res) => {
console.log("Create Account API Triggered");
const { user_name, user_pass, user_email } = req.body;
// const hashedPassword = hashedPassword(password);
const user = await userService.createUserAccount({
user_name,
user_pass,
user_email
});
res.status(201).json({
status: "success",
user,
})
};
成功! 看來我應該有RTFM
。 使用環境變量似乎需要與手冊完全一致。
固定代碼:
# PostgreSQL Database Infomation
PGDATABASE_TEST = user_db
PGDATABASE = user_db
PGUSER = postgres
PGPASSWORD = password
# PostgreSQL Host and Port Infomation
PGHOST = localhost
PGPORT = 5432
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.