说实话,我见过太多人在Linux上装PostgreSQL翻车了——要么是源没配对,要么是权限搞混乱,到最后数据库起不来,只能对着终端干瞪眼。今天我就手把手带你走一遍,从零开始,在Linux系统上把PostgreSQL装好、跑起来。

先说说准备工作。我假设你用的是CentOS 7或Ubuntu 20.04这种常见发行版,因为不同系统的包管理器不一样,但核心逻辑相通。第一步,你得确认服务器能联网,毕竟要下载安装包。如果在内网环境,那就得提前准备好离线包或者本地YUM源,这个后面再说。另外,最好有root权限或者sudo权限,因为安装过程中要写系统目录、改配置文件,普通用户干不了这些活。如果你用的是云服务器,比如阿里云、腾讯云,默认就是root登录,省事很多。但如果你是自己搭的虚拟机或者物理机,记得先sudo su切一下。
接下来是安装环节。在CentOS上,PostgreSQL官方提供了专用的YUM仓库,版本选最新的或者LTS都行。比如装14版,就执行,这个命令会把官方源加进来。然后,等进度条跑完就装好了。Ubuntu更简单,后直接。注意,Ubuntu默认源里的版本可能不是最新,想追新就得加PostgreSQL官方的APT源。装完后别急着高兴,服务还没启动呢。
初始化数据库这一步很多人会忘。PostgreSQL不像MySQL那样装完自动初始化,你得手动跑一条命令。在CentOS上,执行,这个命令会创建数据目录,默认在。Ubuntu上,包管理器通常已经帮你做了初始化,但如果你用的是编译安装或者自定义路径,就得自己跑。初始化完成后,启动服务:CentOS用,Ubuntu用。接着设成开机自启,,这样服务器重启后数据库也能自动起来。
现在服务跑起来了,但还不能直接连。PostgreSQL默认只允许本地socket连接,远程访问得改配置。先切到postgres用户,,然后进去,用给postgres用户设个密码。接着打开,找到这一行,改成,意思是监听所有网卡。再打开,在IPv4 local connections那一行,把改成,这样任何IP都能连。改完后重启服务,。注意,云服务器还得在安全组里开放5432端口,不然外部连不上。
测试连接是最让人忐忑的环节。本地测试很简单,,能进去就说明服务正常。远程测试可以用,如果提示认证失败,八成是密码没设或者pghba.conf配置错了。我遇到过最坑的情况是,防火墙没关导致连不上——CentOS默认开着firewalld,你得或者。还有一次,SELinux把端口封了,得才行。如果你用的是云服务器,记得检查安全组规则,别光在服务器内部折腾。
说点进阶的。生产环境千万别用默认的postgres用户跑业务,应该建个专门的应用用户,比如,然后,再。这样权限隔离,出事也不会波及系统库。另外,别忘了调性能参数:sharedbuffers设为内存的25%,effectivecachesize设为内存的50%,workmem根据并发数调小一点。这些参数在postgresql.conf里改,改完重启。备份也要安排上,定期跑,或者用pg_basebackup做物理备份。
写到这儿,你应该已经把PostgreSQL装好并跑起来了。从加源、装包、初始化、改配置到远程连接,每一步我都踩过坑才总结出来。记住,装数据库最怕的就是想当然——你以为默认配置能直接远程连接,结果被防火墙挡了;你以为初始化自动完成了,结果数据目录是空的。按照这个流程走,至少能保证基础环境没问题。后面怎么用,就看你的业务需求了。


