我正在尝试连接到托管在AWS RDS上的postgres数据库。但不知何故,我得到了下面提到的错误。主机“103.215.537.148”,用户“dbmasteruser”,数据库“postgres”的pg_hba.conf条目,未加密
使用PostGres 15.2
我试过在互联网上检查,但我不知道如何改变pg_hba.conf文件在AWS的RDS。
我尝试连接数据库到ec2并设置入站规则,但没有任何工作。
谢谢你的帮助
import WebSocket from 'ws';
import PGPubsub from 'pg-pubsub';
import { db } from '../../config';
const initializeWebSocket = async (server: any) => {
const wss = new WebSocket.Server({ server });
const connectionString =
process.env.NODE_ENV === 'development'
? db.dev.DB_URL
: db.production.DB_URL;
console.log('_____', process.env.NODE_ENV, '______ws');
const pgClient = new PGPubsub(
'postgres://dbmasteruser:[email protected]:5432/postgres',
{ log: console.log },
);
const channel = 'users_insert';
await pgClient.addChannel(channel, function (channelPayload) {
console.log(channelPayload, 'channnel run is ther some insersion');
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send('Data in the database has changed');
}
});
});
const matchChannel = 'match_update';
await pgClient.addChannel(matchChannel, function (channelPayload) {
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send('Data in the database has changed');
}
});
});
const res = await pgClient.publish(channel, { hello: 'world' });
export default initializeWebSocket;
import Logger from './core/Logger';
import { port } from './config';
import app from './app';
import http from 'http';
import WebSocket from './routes/webSocket/webSocketServer';
console.log('hii server');
const server = http.createServer(app);
WebSocket(server);
server
.listen(port, () => {
Logger.info(`server running on port : ${port}`);
})
.on('error', (e) => Logger.error(e));
2条答案
按热度按时间iyr7buue1#
我所知道的获得此错误的唯一方法是RDS示例被配置为强制使用rds.force_ssl =1的SSL,而客户端要么不知道如何使用SSL,要么被配置为不使用SSL。如果这就是问题所在,要么关闭force_ssl,要么想办法让客户端合作。
另一种可能性是客户端首先尝试使用SSL,但由于其他未显示的原因而失败,然后尝试不使用SSL并得到显示的错误。也许客户端对您隐藏了第一条错误消息,或者您只是忽略了它。在这种情况下,需要解决的真实的错误是另一个你没有给我们看的错误。如果是这种情况,可以找到的另一个错误消息是RDS日志。
new9mtju2#
错误消息表明PostgreSQL连接设置有问题。要解决问题,请执行以下操作:
验证AWS RDS安全组是否允许来自应用程序IP地址的入站流量。
验证您的客户端是否配置为使用SSL(如果RDS示例需要)。
检查您的RDS端点、端口、用户名和密码是否准确。
确保您的RDS示例包含指定的“postgres”数据库。
验证RDS示例的“dbmasteruser”权限。
检查AWS RDS日志并留意连接问题。
验证PostgreSQL 15.2是否与您的客户端库兼容。
检查防火墙问题和网络访问。
再次验证环境变量是否存在错误或错误值。
希望能帮到你解决问题:)