Docker部署Telegram机器人时PostgreSQL出现未知登录报错如何解决?
解决方案
方案1:删除数据库公网端口映射(最推荐)
你的PostgreSQL容器和机器人容器同属于steamtrader_botnet自定义桥接网络,本身就能直接通过服务名互相访问,完全不需要把5432端口暴露到公网,这也是你现在收到大量暴力破解请求的核心原因。直接修改docker-compose.yml里steamtrader_db的ports配置即可:
# 删掉或者注释掉这两行端口映射配置 # ports: # - 5432:5432
修改后重新启动服务:docker-compose up -d
修改后外部网络根本访问不到你的数据库,自然不会再有暴力破解请求,也完全不影响机器人的爬虫功能和数据库连接,机器人连接数据库时直接用服务名steamtrader_db作为数据库host即可。
方案2:确需对外暴露端口时配置IP白名单
如果你有本地远程连接数据库的需求,必须暴露5432端口的话,可以修改端口映射规则限定允许访问的源IP:
ports: # 只允许指定IP访问,示例为允许123.123.123.123这个IP访问 - 123.123.123.123:5432:5432 # 多个允许访问的IP/IP段可以加多行配置 - 192.168.1.0/24:5432:5432
也可以通过服务器的防火墙工具(ufw、firewalld等)配置5432端口的访问白名单,效果一致。
额外安全建议
- 数据库密码设置为强密码,包含大小写字母、数字、特殊符号,长度不低于16位
- 不要使用postgres这类默认用户名,自定义专属的数据库用户名
- 定期升级PostgreSQL镜像版本,修复已知安全漏洞
内容的提问来源于stack exchange,提问作者429
相关产品推荐
相关产品推荐

