You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu终端与Sql Shell、pgAdmin中PostgreSQL数据库不一致问题求助

解决WSL与Windows PostgreSQL实例不同步问题

方案一:让pgAdmin连接WSL中的PostgreSQL实例

这是最直接的方式,无需迁移数据,就能在pgAdmin中管理WSL里的数据库:

  • 修改WSL PostgreSQL的连接配置

    • 找到Homebrew安装的PostgreSQL配置目录,路径为/home/linuxbrew/.linuxbrew/var/postgresql@15/
    • 编辑pg_hba.conf文件,添加一行规则允许Windows主机连接:
      host    all             all             172.17.0.1/16        scram-sha-256
      
      (172.17.0.1是WSL默认的Windows网关IP,限制这个段更安全;如果需要允许所有IP,可改为0.0.0.0/0)
    • 编辑postgresql.conf文件,修改监听地址:
      listen_addresses = '*'
      
    • 重启WSL的PostgreSQL服务:
      brew services restart postgresql@15
      
  • 获取WSL的IP地址
    在WSL终端执行:

    hostname -I
    

    记下输出的IP(通常是172.17.x.x格式)

  • 在pgAdmin中添加WSL服务器

    • 打开pgAdmin,右键「服务器组」→「创建」→「服务器」
    • 「常规」选项卡:输入名称(比如「WSL PostgreSQL 15」)
    • 「连接」选项卡:
      • 主机名/地址:填入刚才获取的WSL IP
      • 端口:默认5432
      • 用户名:WSL PostgreSQL的超级用户(通常是你的Linux用户名,或postgres)
      • 密码:对应用户的密码
    • 点击「保存」,即可看到WSL中的所有数据库

方案二:合并两个实例的数据库(迁移Windows数据到WSL)

如果想统一使用WSL的PostgreSQL实例,可将Windows中的数据库迁移过去:

  • 导出Windows中的数据库

    • 打开Windows的Sql Shell,登录目标数据库后执行导出命令:
      pg_dump -U 用户名 -d 数据库名 > C:\temp\backup.sql
      
      或者在pgAdmin中右键目标数据库→「备份」,选择SQL格式保存到Windows路径下
  • 将备份文件复制到WSL
    在WSL终端执行(假设备份文件在C:\temp):

    cp /mnt/c/temp/backup.sql ~/
    
  • 在WSL中创建目标数据库并导入数据

    • 创建空数据库:
      createdb -U 用户名 目标数据库名
      
    • 导入备份数据:
      psql -U 用户名 -d 目标数据库名 < ~/backup.sql
      

后续配置调整

  • 你的Spring Boot项目在WSL中运行,只需将application.properties或application.yml中的数据库连接配置改为WSL实例的信息:
    spring.datasource.url=jdbc:postgresql://localhost:5432/你的数据库名
    spring.datasource.username=WSL PostgreSQL用户名
    spring.datasource.password=对应密码
    
  • 之后可停止Windows中的PostgreSQL服务,避免混淆

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:35:34