postgresql pg_hba.conf主机“< ip address>“,用户“< db user>“,数据库“postgres”的条目,没有加密,如何解决这个问题?

u3r8eeie  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(150)

我正在尝试连接到托管在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));
iyr7buue

iyr7buue1#

我所知道的获得此错误的唯一方法是RDS示例被配置为强制使用rds.force_ssl =1的SSL,而客户端要么不知道如何使用SSL,要么被配置为不使用SSL。如果这就是问题所在,要么关闭force_ssl,要么想办法让客户端合作。
另一种可能性是客户端首先尝试使用SSL,但由于其他未显示的原因而失败,然后尝试不使用SSL并得到显示的错误。也许客户端对您隐藏了第一条错误消息,或者您只是忽略了它。在这种情况下,需要解决的真实的错误是另一个你没有给我们看的错误。如果是这种情况,可以找到的另一个错误消息是RDS日志。

new9mtju

new9mtju2#

错误消息表明PostgreSQL连接设置有问题。要解决问题,请执行以下操作:
验证AWS RDS安全组是否允许来自应用程序IP地址的入站流量。
验证您的客户端是否配置为使用SSL(如果RDS示例需要)。
检查您的RDS端点、端口、用户名和密码是否准确。
确保您的RDS示例包含指定的“postgres”数据库。
验证RDS示例的“dbmasteruser”权限。
检查AWS RDS日志并留意连接问题。
验证PostgreSQL 15.2是否与您的客户端库兼容。
检查防火墙问题和网络访问。
再次验证环境变量是否存在错误或错误值。
希望能帮到你解决问题:)

相关问题