资讯动态

Windows下PostgreSQL安装配置与Navicat连接避坑指南

发布时间:2026/10/19 5:36:57 来源:尧图企业网站定制
很多人第一次在 Windows 上装 PostgreSQL以为跟装个普通软件一样一路 Next 就行结果卡在密码策略、端口占用、命令行工具认不出 psql 这些细节上折腾半天连不上数据库。这篇文章把我在 Windows 环境下安装 PostgreSQL、用 Navicat 连接、以及过程中最常踩的坑完整过一遍希望你看完能一次走通。1. 安装前的准备工作1.1 版本选择与安装包获取PostgreSQL 官方提供 Windows 安装包下载时别盲目选最新版。对大多数项目来说稳定版比尝鲜版更重要。我的建议是选择当前最新的稳定大版本比如 16.x 系列而不是刚发布不久的 17 或者更旧的 12、13。新版虽然功能新但一些第三方工具比如 Navicat 的旧版本、某些 ORM 驱动可能要等一阵子才能完美适配。可以在官网的 download 页面找到 Windows 安装器一般是个.exe文件几十 MB 到一百多 MB 不等。1.2 安装前的系统检查在双击安装包之前最好先做两件事检查是否已安装过 PostgreSQL有些人在不知情的情况下装过或者装了某些集成环境自带的 PostgreSQL导致端口冲突或服务名冲突。建议先打开“服务”窗口WinR 输入services.msc看看有没有包含postgresql字样的服务。确认 5432 端口是否被占用PostgreSQL 默认端口是 5432。提前打开命令行执行一下netstat -ano | findstr 5432如果没有任何输出说明端口空闲。如果有输出且状态是LISTENING那就得留意了要么是旧版本 PostgreSQL要么是其他程序占用了。在安装时可以改端口但我个人建议优先解决端口占用问题尽量保持 5432 这个默认端口免得后面连接配置的时候还要单独写端口号。2. 安装 PostgreSQL 的完整过程2.1 安装向导逐步操作拿到安装包后双击运行接下来就是跟着向导走。大部分步骤很直白但有几个环节容易出问题我一个个说。第一步选择安装目录。默认是C:\Program Files\PostgreSQL\16如果你不想装在 C 盘可以改成 D 盘或者其他位置。这里要注意安装目录不要包含中文和空格否则极少数情况下会导致一些命令行工具或驱动加载异常。也别图省事直接把整个 PostgreSQL 装在根目录后面想找配置文件的时候会很难受。第二步选择组件。安装向导会让你勾选组件默认是全部勾选包括 PostgreSQL Server、pgAdmin 4、Stack Builder、Command Line Tools。建议全选尤其是 Command Line Tools里面包含psql、pg_dump、pg_restore这些命令行工具备份恢复、日常维护都离不开它们。pgAdmin 4 是官方图形化管理工具留着没坏处。第三步设置数据目录。这一步相当关键。默认数据目录在安装目录下的data文件夹里如果你把安装目录放在系统盘那数据库文件也默认放在系统盘。有条件的强烈建议把数据目录单独指定到数据盘或容量充足的磁盘分区。比如我习惯放在D:\PostgreSQL\Data这样后续如果系统重装或卸载软件数据文件还在不至于全盘皆输。安装向导里有一步专门让你设置 Data Directory在这一步改好即可。第四步设置超级用户密码。这里设置的密码是数据库超级用户postgres的密码。有两点要特别注意密码别用太简单的虽然本地开发没人管你但一旦端口暴露到公网或者局域网弱密码就等于裸奔。务必牢记这个密码Navicat 连接、psql 登录都是用这个密码。实在怕忘就临时记在密码管理器里。注意这个密码跟安装 PostgreSQL 的 Windows 系统用户密码没有任何关系别想着“Windows 登录密码不就是这个”那是两码事。第五步设置端口。默认是 5432。除非你的 5432 确实被占用了否则别改。如果改了后面连接数据库时端口必须写对很多新手连接失败就是端口写错了。第六步 locale 设置。安装过程中会让你选 locale也就是区域和编码。这一步非常多人踩坑。默认值通常是操作系统当前区域对应的 locale在中文 Windows 上可能会默认成Chinese (Simplified) China但如果你打算用psql或者处理一些国际化的数据建议选择C或者en_US.UTF-8具体看你的数据需求。不过说实话多数情况下用默认的也能跑只是如果后面发现中文乱码或者排序有问题往往就是 locale 没选对。更稳妥的做法是选C数据库默认编码UTF8基本能在通用场景下兼容绝大多数客户端。全部设置完之后向导会汇总一遍你填的信息确认无误后点击 Next 开始安装。安装过程会执行初始化数据库、注册 Windows 服务、安装命令行工具等动作一般几分钟内完成。2.2 验证安装是否成功安装完成后不要急着去打开 Navicat先在本地把基础验证做了。Windows 开始菜单里能找到pgAdmin 4或SQL Shell (psql)。如果你用的是SQL Shell (psql)启动后它会依次问你 Server、Database、Port、Username、Password。直接回车使用默认值本机、postgres 数据库、5432 端口、postgres 用户最后输入你刚才设置的密码。看到以下提示就说明安装成功了postgres#出现这个提示符说明你已经进入了 PostgreSQL 的命令行交互界面。此时可以敲一个简单的命令试试SELECT version();能正常返回 PostgreSQL 版本信息就说明服务在跑数据库也能正常响应。3. 核心配置解析PostgreSQL 服务与连接原理3.1 Windows 服务机制安装完成后PostgreSQL 不是在前台跑的程序而是作为 Windows 的后台服务运行。你可以在服务管理里找到名字类似postgresql-x64-16的服务。这意味着即使没有任何图形界面打开数据库也能一直运行。这点对很多新手来说是个认知盲区他以为要开着某个窗口才能访问数据库其实完全不需要。只要服务状态是“正在运行”任何客户端都能连接。如果你发现数据库连不上第一步就是去服务管理里确认这个服务是否在运行双击服务还能设置启动类型为“自动”确保开机自启。3.2 连接 PostgreSQL 的底层逻辑无论你用 Navicat 还是命令行 psql连接一个 PostgreSQL 数据库本质上就是在做一件事向 PostgreSQL 服务发起 TCP 连接然后通过认证。连接过程中需要几样信息主机地址本机就是localhost或127.0.0.1远程机器就是对方的 IP。端口号默认5432。用户名默认超级用户是postgres也可以创建普通用户。密码安装时设置的那个。数据库名默认安装后会有一个名为postgres的数据库如果要连其他库需要先创建。连接时会读取 PostgreSQL 的认证配置文件也就是pg_hba.conf。这个文件决定了哪些 IP 段可以访问、用什么方式认证密码、信任、拒绝等。Navicat 连接报错如果出现 “no pg_hba.conf entry for host”就说明远端连接的规则没放开。后面会详细说怎么改。3.3 安装路径与配置文件位置PostgreSQL 的配置文件都在数据目录下而不是安装目录下。比如postgresql.conf主配置文件包括监听地址、端口、内存参数、日志等。pg_hba.conf客户端认证配置文件控制谁可以连、怎么验证身份。如果需要修改监听地址比如允许远程连接要改postgresql.conf里的listen_addresses默认是localhost只允许本机连接。改成*或具体 IP 后还要在pg_hba.conf里加上对应的认证规则然后重启服务才能生效。很多人在文件里改了老半天发现没效果大概率是忘了重启服务。4. Navicat 连接 PostgreSQL 图文详解4.1 新建连接前的信息准备打开 Navicat我用的是 Navicat 16 版本其他版本界面大同小异点击左上角的“连接”选择 “PostgreSQL”。在弹窗里填这些内容连接名随便起比如本地PG只是用来区分不同连接不参与实际连接。主机本机填localhost或127.0.0.1。如果是远程连接的服务器填对方的 IP 或域名。端口5432安装时改过端口的填你改的那个。用户名postgres密码安装时设置的超级用户密码。数据库这一步可以先不填连接成功后会在左侧展开看到所有数据库也可以直接填postgres先行测试。填完后点击“测试连接”。如果弹窗提示“连接成功”说明数据库服务正常、认证也通过了。4.2 连接成功后的基础操作连接成功之后左侧会出现连接下的数据库列表。默认只有一个postgres数据库。要新建一个业务数据库右键“连接名”或“数据库”节点选择“新建数据库”。数据库名称、所有者一般选postgres编码选UTF8模板选template0因为template1可能带有一些额外的对象复制过来不干净。如果你平时用的是 MySQL会发现 PostgreSQL 的很多概念跟 MySQL 不太一样。比如PostgreSQL 里有“模式”Schema的概念数据库Database下是模式模式里才是表。默认的public模式就是 MySQL 里的默认库空间。新建表时表归属在某个模式底下用的时候要写成schema名.表名。这些概念理解不到位的话连接上之后会有点懵但用顺手了就回不去了。4.3 连接失败的常见提示与含义Navicat 连接出错时错误信息往往是一大段英文看得人头皮发麻。我挑几个最常见的说一下错误一server does not listen意思是服务没有在监听。检查几步服务是否启动了端口是否填对了是否远程连接远程连接要改listen_addresses否则服务只在本地监听。错误二password authentication failed密码验签失败。密码填错了或者你连的用户不是postgres也可能该用户设置了不同的密码。如果是远程连接还要确认pg_hba.conf允许该 IP 通过密码方式认证。错误三no pg_hba.conf entry for host ...服务端根本没有把你这个 IP 放进白名单。去pg_hba.conf添加一条规则比如host all all 0.0.0.0/0 scram-sha-256这么写表示允许所有 IP 通过密码认证访问所有数据库仅限测试环境生产环境建议指定客户端 IP 段。错误四database does not exist填的数据库名不存在。要么先创建要么连接时留空。4.4 Navicat 与 pgAdmin 的选择很多人装了官方自带的 pgAdmin但还是习惯用 Navicat因为界面简洁连接管理方便导入导出也更直观。不过 pgAdmin 完全免费Navicat 需要授权。如果你只是偶尔连一下pgAdmin 够用如果日常工作频繁操作多个库Navicat 的体验会好很多。关键是Navicat 只是客户端不会影响数据库服务端本身的配置和运行。不管用哪个客户端最终都是走同样的 TCP/IP 协议和认证流程。所以千万别在服务端问题上纠结客户端选型先把服务端这一层的网络和认证打通再说。5. 常见问题排查与避坑指南5.1 psql 命令找不到很多人装完后打开命令提示符输入psql提示“不是内部或外部命令”。这是因为安装过程中虽然装了命令行工具但没有把psql的路径加入系统环境变量。默认情况下psql 在安装目录下的bin目录里比如C:\Program Files\PostgreSQL\16\bin两个解决办法手动把bin目录加入 PATH 环境变量右键“此电脑” - 属性 - 高级系统设置 - 环境变量 - Path - 新建把上面的路径加进去。或者每次打开 SQL Shell 工具它已经帮你把路径配好了不用手动处理。我个人建议把bin加进 PATH因为后面你用pg_dump做备份、用psql执行 SQL 脚本都需要能直接调命令。5.2 端口被占用的排查思路如果安装时提示 5432 端口无法使用先用前面的 netstat 命令找到占用进程的 PID然后在任务管理器里找到对应进程搞清楚是什么程序。常见情况你之前装过 PostgreSQL旧的实例还在跑。装了某些数据库管理集成环境自带了 PostgreSQL。其他应用恰好占用了 5432。如果是旧实例在跑建议直接卸载掉旧版本否则很容易出现混淆。之前我就碰到过一台机器上装了 PostgreSQL 12 和 16服务同时跑着5432 被老的占着新的只能用 5433。后来想连老的密码又忘了折腾了很久才理清楚。5.3 远程连接配置的完整步骤本地连接通常没问题毕竟 localhost 和密码认证都是默认支持的。但如果你想在局域网内用另一台电脑连接这台机器的 PostgreSQL会发现问题不少。完整配置步骤如下第一步改监听地址。打开postgresql.conf找到下面这一行#listen_addresses localhost改成listen_addresses *这个符号表示监听所有网卡上的连接请求。如果你只想允许特定 IP 访问可以写成具体的 IP 列表但一般应用场景下用*就够。第二步改认证规则。打开pg_hba.conf在文件末尾追加host all all 192.168.1.0/24 scram-sha-256192.168.1.0/24表示允许这个网段的客户端来连你可以改成自己的局域网网段。第三步重启服务。在服务管理里找到 PostgreSQL 服务右键选择“重启”。第四步关注防火墙。Windows 防火墙默认会拦截外部对 5432 端口的访问。在“高级安全 Windows Defender 防火墙”里新建入站规则放行 TCP 5432 端口。这一步漏掉的话外部怎么都连不上。提示远程连接的生产环境不要用0.0.0.0/0这种全放行的规则至少在防火墙和pg_hba.conf里限制成具体网段否则数据库暴露在公网上很容易被恶意扫描攻击。5.4 密码与加密方式不匹配PostgreSQL 从 14 版本开始默认密码加密方式改成了scram-sha-256。如果你之前用过旧版本可能习惯用md5。如果pg_hba.conf里写的是md5而数据库密码是以scram-sha-256方式存储的认证就会失败。解决办法就是统一为一种方式。生成pg_hba.conf时默认的scram-sha-256一般不需要改除非有老客户端不兼容。Navicat 对scram-sha-256的支持很成熟低版本可能有些问题。如果你用了很老版本的 Navicat连接时提示unsupported frontend protocol之类的错误大概率是客户端版本太旧不识别新的认证协议。解决办法是升级 Navicat或者暂时把pg_hba.conf改成md5但需要同时把那行认证方式改为 md5并且密码得是 md5 格式存储的比较麻烦。5.5 中文乱码问题中文乱码多半出在数据库编码设置上。安装时选了中文 locale 会导致某些特殊字符处理方式不同更常见的是在创建数据库时没选对编码。创建数据库时把字符集选成UTF8模板选template0基本可以避免绝大多数乱码问题。如果你已经建好数据库且里面全是中文数据这时候改编码很麻烦建议在刚创建时就把编码定好。另外Navicat 连接时也可以在连接属性的“高级”里设置编码为自动或UTF-8保证客户端和服务端的编码一致。5.6 忘记超级用户密码怎么办如果是自己的开发机把数据目录下的pg_hba.conf临时改成local all all trust host all all 127.0.0.1/32 trust然后重启服务此时本机连接不需要密码。用 psql 连上后执行ALTER USER postgres WITH PASSWORD 新的密码;改完之后把pg_hba.conf改回原来的认证方式再重启服务。这个操作需要你能进去编辑数据目录下的配置文件。如果你是完全托管在云端的数据库那只能通过云厂商的控制台重置密码了。6. 安装后的日常配置建议6.1 设置 PATH 环境变量前面提到过把bin目录加入环境变量的好处这里再补充几个实际用法。配好 PATH 后你可以直接在任何目录下执行pg_dump -U postgres -d 数据库名 -f 备份文件.sql pg_restore -U postgres -d 数据库名 备份文件.sql psql -U postgres -d 数据库名 -f 脚本.sql不用每次 cd 到安装目录去敲命令省下大量重复劳动。尤其是做定时备份的时候脚本里直接写命令名比写全路径干净很多。6.2 数据备份策略PostgreSQL 不像某些一键备份工具那样有明显的“背份”按钮日常开发中用命令行备份就够了。我常用的备份方式有两种方式一SQL 格式备份文本文件pg_dump -U postgres -d 数据库名 -f backup.sql这种格式可读性好适合小数据量和跨版本迁移用 psql 就能恢复psql -U postgres -d 数据库名 -f backup.sql方式二自定义格式备份二进制pg_dump -U postgres -F c -d 数据库名 -f backup.dump恢复时用 pg_restorepg_restore -U postgres -d 数据库名 backup.dump后者支持选择性恢复、并行恢复数据量大的时候效率更高。6.3 性能与日志的基本把握不要一上来就乱调shared_buffers、work_mem这些参数。Windows 下 PostgreSQL 的性能瓶颈往往在 IO 和配置不当上而不是参数不够大。建议保持默认先跑一段时间看日志。日志位置在数据目录的log文件夹里出现问题可以按时间查看。如果确实要优化比如机器内存有 16G可以把shared_buffers调到 2G 到 4G但要注意 Windows 上 PostgreSQL 的shared_buffers设置得过高反而可能引起性能问题。没有清晰需求时保持默认永远是最稳的选择。7. 个人实操体会我在 Windows 上装 PostgreSQL 的次数少说也有两位数了踩过的坑基本都集中在刚装完的阶段。最大的体会是安装本身并不复杂麻烦的是安装时低估了后续连接配置的重要性。如果你一开始就把密码记清楚、数据目录分盘存放、端口不冲突、pg_hba.conf 和防火墙提前想好后面所有的连接问题起码少一大半。还有一点PostgreSQL 跟 MySQL 的思路差别挺大尤其是数据库、模式、表的三层结构初次接触的人容易在“我应该连哪个库”这个问题上懵。我的经验是先不要创建一堆数据库而是就放在postgres库里玩等你理解了模式的概念再按业务拆库拆 schema改动成本会低很多。最后分享一个小技巧连接 Navicat 的时候如果你有多个环境本地、测试、生产建议在连接名上加上环境后缀比如本地PG、测试PG、生产PG。听起来很蠢但真的能防止你手滑在生产库上执行危险操作。别问我怎么知道的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑