环境准备
- 操作系统:CentOS 7.x
- 数据库版本:PostgreSQL 15 (centos 7 最该支持 ps15.* 版本)
- 网络要求:可访问外部网络,或使用国内镜像源
- 权限要求:具有
sudo
权限的用户
安装 PostgreSQL 15
1. 添加 PostgreSQL 官方 YUM 仓库
为了安装最新版本的 PostgreSQL,需要先添加其官方 YUM 仓库。
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
如果访问速度较慢或无法访问,可使用阿里云的镜像源:
sudo yum install -y https://mirrors.aliyun.com/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2. 安装 PostgreSQL 15
安装 PostgreSQL 15 服务器和客户端:([Linux Console][4])
sudo yum install -y postgresql15-server postgresql15
3. 初始化数据库
初始化数据库集群:([Linux Console][4])
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
4. 启动并设置开机自启
启动 PostgreSQL 服务并设置为开机自启:([博客园][5])
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
执行 systemctl enable
命令后,系统会创建一个符号链接,使 PostgreSQL 服务在系统启动时自动启动。
配置远程连接
1. 修改监听地址
编辑 PostgreSQL 配置文件,允许监听所有 IP 地址:
sudo vi /var/lib/pgsql/15/data/postgresql.conf
找到以下行:
#listen_addresses = 'localhost'
修改为:
listen_addresses = '*'
2. 配置客户端认证
编辑 pg_hba.conf
文件,允许远程连接:
sudo vi /var/lib/pgsql/15/data/pg_hba.conf
在文件末尾添加以下行:
host all all 0.0.0.0/0 md5
3. 重启 PostgreSQL 服务
使配置生效:([ComputingForGeeks][6])
sudo systemctl restart postgresql-15
配置防火墙
开放 PostgreSQL 默认端口 5432:
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
验证连接
1. 创建数据库用户和数据库
切换到 PostgreSQL 用户:([博客园][7])
sudo su - postgres
创建用户和数据库:([ComputingForGeeks][6])
CREATE USER root WITH PASSWORD '密码';
CREATE DATABASE mydb OWNER root ;
2. 使用 Navicat 连接
在 Navicat 中,输入以下信息进行连接:
- 主机:服务器的 IP 地址
- 端口:5432
- 用户名:
root
- 密码:在创建用户时设置的密码
- 数据库:
数据库密码
常见问题
- 无法连接数据库:请检查防火墙设置和
pg_hba.conf
配置是否正确。 - 端口未开放:确保防火墙已开放 5432 端口。
- 服务未启动:使用
sudo systemctl status postgresql-15
检查服务状态。
Navicat 15版本错误
ERROR: column "datlastsysoid" does not exist LINE 1: SELECT DISTINCT datlastsysoid FROM pg_database
- 无法连接数据库:由于从 PostgreSQL 15 开始,系统表 pg_database 中移除了 datlastsysoid 字段,而旧版本的 Navicat 仍尝试访问该字段,导致报错。 **解决方法 升级navicat 到17 版本 : ** navicat17教程