重置postgresql数据库
检查
转自:https://www.cnblogs.com/NagaResst/p/17329029.html
最近给公司做内网安全扫描,部署了一个 kali 安装了 GVM。
虽然安装啥的都很人性化,但是坑也不少。这就来数一数。
数据库
首先 kali 上的 postgresql 集群就是多版本的。根据 gvm 版本的不同,需要的数据库版本也不一样。
具体需要哪个版本 gvm-check-setup 会告诉你。
想要看自己的设备上运行了几个集群,使用命令 pg_lsclusters
然后去改配置文件,换端口再重启 postgresql 就行。
配置文件路径 /etc/postgresql/<版本>/main/postgresql.conf
把两个版本的端口号一换,然后 systemctl restart postgresql 就可以了。
这时候再运行 gvm-check-setup,估计数据库这个坑就过了。
The SCAP database is required
安装好大概率是会提示这个。这个问题好解决,但是也是最难解决的,国内同步 gvm 的 feed 库非常吃屎,慢慢搞吧。
sudo gvm-stop
sudo runuser -u _gvm – greenbone-nvt-sync --rsync
sudo greenbone-scapdata-sync
sudo greenbone-certdata-sync
sudo reboot
找不到 scan config 或者 port list
这个问题是最白痴的,本质上算 BUG。
去路径 /var/lib/gvm/data-objects/gvmd/ 找
会有几个版本的文件夹,把有东西的复制到你当前版本的文件夹下可以解决。
如果都没有,就删掉 timestamp 重新更新 greenbone-feed-sync --type GVMD_DATA 。
删掉 timestamp 这步非常重要,gvm 用一个时间戳来控制你同步了多少文件,删掉这个文件就会强制同步所有数据。
当然更新完了别忘了把文件从旧的版本文件夹复制到新的。
如果半路 rsync 报错,同步失败,就继续删掉 timestamp 文件,继续更新。
重装和重置
在Debian上重新安装PostgreSQL,你可以按照以下步骤进行:
卸载已安装的PostgreSQL:
如果你之前已经安装了PostgreSQL,首先需要将其卸载。打开终端,使用以下命令卸载PostgreSQL及其相关依赖:
sudo apt-get purge postgresql* sudo apt-get autoremove
这些命令会删除PostgreSQL软件包及其配置文件。
删除PostgreSQL残留文件:
除了通过包管理器卸载外,你可能还需要手动删除PostgreSQL残留的文件和目录。通常,PostgreSQL的数据文件和配置文件会位于/etc/postgresql/和/var/lib/postgresql/目录下。你可以使用以下命令删除这些目录(如果存在的话):
sudo rm -rf /etc/postgresql/ sudo rm -rf /var/lib/postgresql/
注意:在执行上述命令之前,请确保你已经备份了所有重要的数据库文件,因为这将删除所有相关的数据库文件。
更新软件包列表:
在重新安装之前,更新你的Debian系统的软件包列表是很重要的。使用以下命令更新:
sudo apt update
安装PostgreSQL:
现在你可以重新安装PostgreSQL了。使用以下命令安装最新版本的PostgreSQL:
sudo apt install postgresql
安装过程中,系统会提示你输入管理员密码以完成安装。
检查PostgreSQL状态:
安装完成后,PostgreSQL服务将自动启动。你可以使用以下命令检查PostgreSQL服务的状态:
sudo systemctl status postgresql
如果服务正在运行,你将看到相关的状态信息。
访问PostgreSQL:
默认情况下,PostgreSQL会创建一个名为“postgres”的系统用户,并且只允许该用户访问数据库。你可以使用psql命令行工具以“postgres”用户的身份登录到PostgreSQL数据库:
sudo -u postgres psql
这将启动psql命令行界面,你可以在这里执行SQL命令。
请注意,这些步骤假设你具有足够的权限来安装和卸载软件包,并且你的Debian系统已经配置好了网络连接,以便能够下载和安装软件包。如果你遇到任何问题或错误消息,请根据错误消息的内容进行故障排除或寻求进一步的帮助。
sudo -u postgres psql
psql: 错误: 连接到套接字"/var/run/postgresql/.s.PGSQL.5432"上的服务器失败:没有那个文件或目录 Is the server running locally and accepting connections on that socket?
这个错误表明psql客户端尝试以postgres用户的身份连接到PostgreSQL服务器时失败了,因为无法找到预期的Unix套接字文件。这通常意味着PostgreSQL服务没有运行,或者配置不正确,导致客户端无法找到正确的连接套接字。
要解决这个问题,请按照以下步骤操作:
检查PostgreSQL服务状态:
首先,你需要确认PostgreSQL服务是否正在运行。在Debian系统上,你可以使用systemctl来检查服务的状态:
sudo systemctl status postgresql
如果服务没有运行,你可以使用以下命令启动它:
sudo systemctl start postgresql
然后再次检查服务状态以确保它已成功启动。
检查PostgreSQL版本和集群:
Debian系统可能安装了多个版本的PostgreSQL或者配置了多个集群。确保你检查的是正确版本或集群的服务状态。
检查Unix套接字文件:
如果服务正在运行,但psql仍然报告找不到套接字文件,请检查/var/run/postgresql/目录,看是否有与你的PostgreSQL实例相对应的套接字文件。PostgreSQL实例通常以其版本号命名(例如12-main),所以你可能需要查找类似于/var/run/postgresql/12-main/.s.PGSQL.5432的文件。
检查PostgreSQL配置文件:
查看PostgreSQL的配置文件(通常是postgresql.conf),确认它指向了正确的Unix套接字位置。配置文件通常位于/etc/postgresql/[版本号]/main/。
查看日志:
检查PostgreSQL的日志文件以获取更多信息。日志文件通常位于PostgreSQL数据目录中,或者可以在/var/log/postgresql/找到。
尝试使用TCP/IP连接:
如果Unix套接字连接不起作用,你可以尝试使用TCP/IP连接。这通常涉及修改pg_hba.conf文件以允许基于TCP/IP的连接,并确保postgresql.conf中正确配置了listen_addresses(将其设置为'*'以监听所有IP地址)。
重新加载配置或重启服务:
如果你更改了任何配置文件,请确保重新加载或重启PostgreSQL服务以应用这些更改。
检查防火墙和网络设置:
确保没有任何防火墙规则阻止你访问PostgreSQL的端口(默认为5432)。
确保用户和环境变量:
当你使用sudo -u postgres psql时,确保你的环境变量没有干扰PostgreSQL的连接。有时,sudo会清除环境变量,这可能会影响连接。如果需要,你可以使用sudo -E来保留环境变量。
如果你尝试了上述所有步骤但问题仍然存在,请检查PostgreSQL的安装是否完整或是否存在其他系统问题。在一些情况下,重新安装PostgreSQL可能是必要的。但在重新安装之前,请确保备份所有重要的数据库文件。
标签:psql,文件,postgresql,openvas,配置文件,GVM,sudo,排除,PostgreSQL From: https://www.cnblogs.com/yeziwinone/p/18162733