本解决办法基于博主自身实验学习所得,在使用Armitage是否出现无法连接的错误,端口错误,或者在kali运行db_status出现数据库无法连接的问题提出的一些解决办法,希望可以帮助到大家。必须看清楚自己的postgresql的版本为多少
出现:postgresql selected,no connection
又或出现:psql无法链接到服务器
一、解决方法
1、进入msfconsole
输入db_status查看数据库服务是否连接正常,正常如下图,不正常为no connection
首先排除编码错误,作者在这个地方设置好了仍然出错,但不排除问题是否出自这里,查看postgresql的日志文件,如果内容出现"ic messages": "en US.UTF-8"说明编码错误
cat /var/log/postgresql/postgresql-16-main.log #查看日志文件
找到en_US.UTF-8编码空格选择,回车确定即可,在重新启动服务
dpkg-reconfigure locales ##修改编码
systemctl restart postgresql ##重新启动服务
最后在使用msfdb reinit查看是否成功,作者仍然配置不成功,所以作者选择重新安装postgresql服务
msfdb reinit #初始化
2、重装postgresql
卸载 PostgreSQL
sudo apt-get remove --purge postgresql
确认卸载完成后,安装 PostgreSQL
sudo apt-get update ##更新软件
sudo apt-get install postgresql #安装postgresql
安装完成后,重新创建一个名为 "main" 的 PostgreSQL 16 集群,如果没有出现问题即跳至最后一步完成
sudo pg_createcluster 16 main --start
启动时出现Error: cluster configuration already exists,已经存在一个与指定的集群名称相同的集群配置
手动停止 PostgreSQL 16 服务
sudo systemctl stop postgresql@16-main
尝试手动杀死可能仍在运行的 PostgreSQL 进程
sudo pkill -u postgres
确保 PostgreSQL 进程已经停止后,手动删除残留的数据目录和配置文件
sudo rm -r /var/lib/postgresql/16/main
sudo rm -r /etc/postgresql/16/main
最后,再次尝试创建一个名为 "main" 的 PostgreSQL 16 集群
sudo pg_createcluster 16 main --start
最后
└─# sudo pg_createcluster 16 main --start 1 ⨯ Creating new PostgreSQL cluster 16/main ... /usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/16/main --auth-local peer --auth-host scram-sha-256 --no-instructions
属于此数据库系统的文件宿主为用户 "postgres".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple" 禁止为数据页生成校验和. 修复已存在目录 /var/lib/postgresql/16/main 的权限 ... 成功 正在创建子目录 ... 成功 选择动态共享内存实现 ......posix 选择默认最大联接数 (max_connections) ... 100 选择默认共享缓冲区大小 (shared_buffers) ... 128MB 选择默认时区 ... America/New_York 创建配置文件 ... 成功 正在运行自举脚本 ...成功 正在执行自举后初始化 ...成功 同步数据到磁盘...成功 Ver Cluster Port Status Owner Data directory Log file 16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
完成,进入msfconsole输入db_satus查看是否正确链接,也可以查看5432端口是否在监听
成功后可以将服务设置为自启动,否则每次使用都必须开启服务