You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

重启Lubuntu测试虚拟机后PostgreSQL数据库连接失败问题求助

排查Lubuntu虚拟机重启后PostgreSQL连接失败的方案

遇到重启后数据库连不上的问题,咱们一步步来定位原因,先从最基础的环节检查:

1. 确认PostgreSQL服务是否正常运行

首先得确保数据库服务本身起来了,毕竟重启虚拟机后有些服务可能没设置开机自启:

  • 执行命令查看服务状态:
    sudo systemctl status postgresql
    
    如果输出里显示active (running),那服务没问题;要是显示inactive或者failed,先手动启动服务:
    sudo systemctl start postgresql
    
    为了避免下次重启再出问题,记得设置开机自启:
    sudo systemctl enable postgresql
    

2. 检查PostgreSQL的端口监听状态

PostgreSQL默认用5432端口,要是它只监听本地127.0.0.1,那外部的pgAdmin和Laravel API肯定连不上:

  • ss命令查看端口监听情况(比netstat更推荐):
    ss -tulpn | grep 5432
    
    或者如果习惯用netstat,先装工具再查:
    sudo apt install net-tools
    netstat -tulpn | grep 5432
    
    你要找的是postmaster进程是否在监听0.0.0.0(允许所有IP访问)或者你的虚拟机局域网IP,而不是只有127.0.0.1

3. 调整PostgreSQL的连接配置

如果端口只监听本地,就得修改数据库的配置文件:

  • 找到pg_hba.conf(路径一般是/etc/postgresql/<你的PG版本>/main/pg_hba.conf,比如/etc/postgresql/14/main/pg_hba.conf),添加一行允许外部IP段访问的规则:
    host    all             all             192.168.1.0/24        scram-sha-256
    
    192.168.1.0/24换成你主机和虚拟机所在的局域网IP段。
  • 然后编辑postgresql.conf,找到listen_addresses项,改成:
    listen_addresses = '*'
    
    改完后重启PostgreSQL服务生效:
    sudo systemctl restart postgresql
    

4. 检查Lubuntu的防火墙规则

重启后防火墙规则可能重置或者默认挡住了5432端口,Lubuntu默认用ufw防火墙:

  • 先看防火墙是否开启:
    sudo ufw status
    
    如果显示active,就添加5432端口的允许规则:
    sudo ufw allow 5432
    sudo ufw reload
    
    要是你用的是iptables,就检查入站规则:
    sudo iptables -L -n
    
    没有允许5432的话就添加:
    sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
    sudo iptables-save > /etc/iptables/rules.v4
    

5. 测试端口连通性

做完上面的步骤,咱们验证一下端口是否真的通了:

  • 虚拟机本地先测试数据库连接:
    psql -U <你的数据库用户名> -d <数据库名>
    
    能连上说明数据库本身没问题。
  • 在主机上用nc或者telnet测试端口:
    nc -zv <虚拟机IP> 5432
    
    或者
    telnet <虚拟机IP> 5432
    
    如果显示连接成功,那端口就通了;要是失败,回头检查防火墙和PG的监听配置。

6. 确认Laravel API的配置

最后别忘了检查Laravel的.env文件,确保数据库连接参数正确:

  • 确认DB_HOST是虚拟机的IP,DB_PORT=5432DB_USERNAMEDB_PASSWORD和数据库的一致,然后重启你的Laravel服务(比如重启php-fpm或者web服务器)。

内容的提问来源于stack exchange,提问作者Magas

火山引擎 最新活动