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

使用pgloader迁移数据库时PostgreSQL密码验证失败的问题求助

解决WSL中pgloader连接Windows本地PostgreSQL的认证失败问题

针对你遇到的pgloader连接PostgreSQL时的密码认证失败问题,结合WSL与Windows的网络环境特性,可尝试以下解决方案:

  • 替换WSL中的localhost为Windows主机IP
    WSL环境的localhost虽默认映射Windows系统,但偶尔会存在网络隔离导致的连接异常。先在Windows命令行执行ipconfig获取本地IPv4地址(如192.168.1.100),修改pgloader命令:

    pgloader mysql://root@localhost:3306/mysqlDB pgsql://postgres:myPassword@192.168.1.100:5432/postgresDB
    
  • 配置PostgreSQL监听所有网络地址
    打开PostgreSQL安装目录下的postgresql.conf(通常路径为C:\Program Files\PostgreSQL\16\data\postgresql.conf),修改listen_addresses参数:

    listen_addresses = '*'
    

    修改完成后,在Windows服务列表中找到PostgreSQL 16服务,右键选择重启使配置生效。

  • 更新pg_hba.conf允许WSL网段连接
    编辑pg_hba.conf(同上述data目录下),添加或更新以下规则,覆盖WSL默认子网和本地局域网段:

    host    all             all             172.17.0.0/16          trust
    host    all             all             192.168.0.0/16         trust
    

    保存后重启PostgreSQL服务,确保新的认证规则生效。

  • 先验证WSL到PostgreSQL的基础连通性
    在WSL Ubuntu中安装PostgreSQL客户端工具,测试连接是否正常:

    sudo apt update && sudo apt install postgresql-client
    psql -h 192.168.1.100 -U postgres -d postgresDB
    

    若psql能成功连接,再执行pgloader命令;若仍失败,排查pgloader的参数或环境问题。

  • 改用配置文件避免命令行密码转义问题
    若密码包含特殊字符,命令行参数可能出现转义错误。创建migrate_config.load配置文件:

    LOAD DATABASE
      FROM mysql://root@localhost:3306/mysqlDB
      INTO pgsql://postgres:myPassword@192.168.1.100:5432/postgresDB
    
      WITH include drop, create tables, create indexes, reset sequences;
    

    运行pgloader时指定该文件:

    pgloader migrate_config.load
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:51:04