PostgreSQL安装和配置教程(Linux版)

PostgreSQL是基于POSTGRES 4.2版本的对象-关系型数据库,由加州大学伯克利分校计算机系研发。POSTGRES开创了许多先进理念,这些概念后来才在一些数据库系统中出现(他们的官网标题宣传的是世界上最先进的开源关系型数据库)。

PostgreSQL是原伯克利代码的后代,它是开源的,支持大部分SQL标准并提供很多现代化特性:复杂查询、外键、触发器、更新视图等。

此外,用户能以多种方式扩展PostgreSQL,例如可以添加新数据类型、新函数、新操作符等。由于自由的许可,PostgreSQL可以被任何人使用、修改、发布。

以下是Linux环境下PostgreSQL的安装、配置与卸载教程:

一、安装前操作

1. 需要安装Liunx操作系统的小伙伴,点击下面任意一个链接查看安装教程:

CentOS Ubuntu Debian
点我查看 点我查看 点我查看

2. 本文使用数据库管理软件DBeaver,需要安装的小伙伴根据自己的操作系统查看安装教程:

Windows macOS
点我查看 点我查看

3. 根据操作系统安装如下依赖:

  • CentOS
1
yum -y install gcc g++ make vim tar wget bzip2
  • Ubuntu/Debian
1
apt-get -y install gcc g++ make vim tar wget ufw

二、下载PostgreSQL安装包

1. 这里我使用wget命令下载的是15.4版本的源码安装包,存储到/usr/local目录下:

1
wget -P /usr/local https://mirrors.tuna.tsinghua.edu.cn/postgresql/source/v15.4/postgresql-15.4.tar.bz2

说明:需要安装其他版本的源码安装包,请点击右侧链接:点我查看

2. 下载完成后,切换到/usr/local目录下:

1
cd /usr/local

3. 下载完成后,执行ls命令,出现PostgreSQL安装包:

三、安装PostgreSQL

1. 将下载好的安装解压,执行如下命令:

1
tar xf postgresql-15.4.tar.bz2

2. 进入解压后的文件夹,执行如下命令:

1
cd postgresql-15.4

3. 安装前检测系统环境(不使用readline和zlib检查),生成适合该环境的Makefile:

1
./configure --without-readline --without-zlib

此时执行ls命令可以看到生成的Makefile文件:

4. 根据Makefile编译源代码,生成可执行文件和其他相关文件(编译需要较长时间,请耐心等待):

1
make

5. 切换到root用户(可能需要输入密码):

1
su

6. 将编译好的文件复制到指定目录下(默认是/usr/local/pgsql目录):

1
make install

7. 创建一个名为postgres的用户(密码自定义,为了方便记忆,这里我将其设置为123456):

1
adduser postgres

8. 创建一个存储数据文件的目录/usr/local/pgsql/data

1
mkdir -p /usr/local/pgsql/data

9. 将/usr/local/pgsql/data目录所有权变更为postgres用户:

1
chown postgres /usr/local/pgsql/data

10. 切换到postgres用户:

1
su - postgres

11. 初始化PostgreSQL数据库,创建数据库目录结构和默认配置:

1
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

出现下面提示说明PostgreSQL初始化成功:

四、为PostgreSQL设置环境变量

为了方便后续在命令行中使用PostgreSQL相关命令,建议为PostgreSQL设置环境变量。

1. 点击Electerm上方点击加号,再打开一个命令行窗口(登录的是root用户):

2. 使用vim命令编辑环境变量文件/etc/profile

1
vim /etc/profile

3. 复制下面内容:

1
2
PATH=/usr/local/pgsql/bin:$PATH
export PATH

4. 进入vim编辑器后,按i键进入编辑模式,将光标移动到文件末尾,按ShiftInsert键将上一步复制的内容粘贴到此处:

5. 按Esc键退出编辑,输入:wq保存并退出。

6. 使用source命令让配置文件生效:

1
source /etc/profile

7. 这里我们来检查一下上述配置是否生效,执行如下命令可以查看当前PostgreSQL版本信息:

1
psql --version

五、启动PostgreSQL服务并设置为开机自启动

1. (当前登录的是root用户)使用vim命令在创建一个PostgreSQL服务文件:

1
vim /etc/systemd/system/postgresql.service

2. 复制下方内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target

3. 进入vim编辑器后,按i键进入编辑模式,按ShiftInsert键将上一步复制的内容粘贴到此处:

4. 按Esc键退出编辑,输入:wq保存并退出。

5. 执行如下命令重新加载配置文件:

1
systemctl daemon-reload

6. 重启PostgreSQL服务:

1
systemctl restart postgresql

7. 执行如下命令可以查看PostgreSQL服务状态:

1
systemctl status postgresql

此时PostgreSQL正常运行,退出查看请按Q键:

8. 如果您希望PostgreSQL开机自启动,执行如下命令即可:

1
systemctl enable postgresql

六、远程连接PostgreSQL

(当前登录的是root用户)上述内容如果你已经配置好,你就可以在命令行使用PostgreSQL了:

1
psql -h localhost -p 5432 -U postgres

此时我们只需要填写前面配置postgres用户密码,即可正常使用:

为数据库用户postgres重新设置密码,为了方便记忆,这里我将密码设置为123456(密码不在命令行显示):

1
ALTER USER postgres WITH PASSWORD '123456';

执行如下命令退出PostgreSQL命令行:

1
exit;

在更多的情况下,我们使用的是第三方客户端(例如:Navicat、DBeaver等)远程连接PostgreSQL服务器,并且默认情况下系统没有开放PostgreSQL默认端口5432,并且PostgreSQL默认只开放本机访问,其他远程访问默认是拒绝的。

以下是解决上述问题的方案:

1. 使用vim命令编辑/usr/local/pgsql/data目录下的postgresql.conf文件:

1
vim /usr/local/pgsql/data/postgresql.conf

2. 进入vim的命令模式后,依次执行如下命令:

1
2
:set nu
/localhost

3. 按i键将第60行修改成所有IP都可以访问,效果图如下:

4. 按Esc退出编辑模式,输入:wq保存并退出。

5. 使用vim命令编辑/usr/local/pgsql/data目录下pg_hba.conf文件:

1
vim /usr/local/pgsql/data/pg_hba.conf

6. 进入vim的命令模式后,依次执行如下命令:

1
2
:set nu
/127.0.0.1

7. 在第91行末尾换行,添加如下内容,所有IP访问都需要密码,效果图如下:

8. 按Esc退出编辑模式,输入:wq保存并退出。

9. 重启PostgreSQL服务:

1
systemctl restart postgresql

10. 开放5432端口(PostgreSQL默认使用端口):

  • CentOS
1
2
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

查看防火墙所有开放的端口:

1
firewall-cmd --zone=public --list-ports

  • Ubuntu/Debian
1
ufw allow 5432/tcp

此时使用ufw status命令可以看到5432端口已经开放访问:

11. 打开DBeaver,按照下图所示操作选择PostgreSQL:

12. 按照下图所示操作配置数据库连接信息:

13. 点击测试连接的小伙伴需要下载数据驱动文件,点击下载即可:

14. 等待一段时间后,驱动下载完成,点击取消关闭下载驱动界面:

15. 再次点击测试连接,如果出现如下提示就说明可以远程链接PostgreSQL数据库了:

16. 点击完成,接下来就可以使用DBeaver编写SQL语句了:


PostgreSQL安装和配置教程(Linux版)
https://www.icode504.com/posts/104.html
作者
iCode504
发布于
2025年4月13日
许可协议