PostgreSQL:如何从psql 9.2版本切换至psql 11版本?
这个问题本质是环境变量PATH的优先级导致的——root用户的PATH里旧版psql的路径排在了11版本前面,而普通用户的PATH已经正确指向了11版本的客户端。这里有几种实用的解决方法:
临时切换(单次生效)
如果只是临时需要用11版本的psql,直接指定它的绝对路径执行即可:
/usr/pgsql-11/bin/psql -V
执行后就能看到11.6的版本输出,适合偶尔用一次的场景。
永久切换(让root默认用11版本)
方法1:修改PATH环境变量(推荐)
这种方法会让所有PostgreSQL 11的工具(比如pg_dump、pg_restore)都优先被调用,一劳永逸:
- 编辑root用户的bash配置文件,比如
/root/.bashrc(如果系统用的是bash_profile就编辑/root/.bash_profile):vi /root/.bashrc - 在文件末尾添加一行,把11版本的bin目录放到PATH最前面:
export PATH=/usr/pgsql-11/bin:$PATH - 保存退出后,执行以下命令让修改立即生效:
source /root/.bashrc - 重新登录root用户,执行
psql -V就能看到版本已经切换到11.6了。
方法2:创建软链接替换旧版
如果只需要替换psql这一个命令,可以用软链接的方式:
- 先找到root当前默认psql的位置:
通常会输出类似which psql/usr/bin/psql的路径。 - 备份旧的psql文件(防止出问题可以恢复):
mv /usr/bin/psql /usr/bin/psql.9.2 - 创建指向11版本psql的软链接:
ln -s /usr/pgsql-11/bin/psql /usr/bin/psql - 执行
psql -V验证,应该就能看到11.6的版本了。
注意事项
- 确认
/usr/pgsql-11/bin这个路径确实存在,和你通过ps -ef | grep postgres看到的PostgreSQL 11进程路径一致。 - 如果需要切换其他PostgreSQL工具,方法1修改PATH会更高效,不用逐个创建软链接。
内容的提问来源于stack exchange,提问作者Bear4
相关产品推荐
相关产品推荐

