Ubuntu手动安装及配置PostgreSQL

本文最后更新于:2024年10月8日 晚上

1、PostgreSQL官方源配置

添加PostgreSQL官方APT源到本地:方便后续从官方源下载或更新PostgreSQL包

1
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

image-20240919104914454

导入PostgreSQL官方的GPG公钥:用来验证PostgreSQL相关包的完整性,防止下载的包被篡改

1
2
# ACCC4CF8.asc为官方公钥文件
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

之后执行apt-get update -yapt update -y更新一下配置的源。

2、PostgreSQL安装

直接执行下面APT指令进行在线安装PostgreSQL:

1
apt -y install postgresql

image-20240918114813169

安装完成如下:

image-20240918115025965

注意: 这里需要注意自己安装的版本为多少,后续需要用到,此处安装的最新版本为PostgreSQL 16。

3、PostgreSQL配置

3.1、创建PostgreSQL数据库账户

这里创建一个非管理员用户,供某个应用单独的使用,隔离数据库与表的权限。下面创建新用户sonar,后续用它来绑定sonarqube应用相关联的数据库:

默认postgres为超级管理员,初始创建数据库及权限配置需要使用该账户操作:

  • 1、以postgres用户直接登录到PostgreSQL控制台:
1
sudo -u postgres psql

或先切换到postgres用户,再执行psql指令进入PostgreSQL:

1
sudo -i -u postgres

image-20240918134753771

进入到PostgreSQL控制台:

image-20240918135037549

2、创建PostgreSQL新账户sonar:

1
2
3
4
5
6
7
8
9
10
# 创建sonar用户并设置密码ad123456!
CREATE USER sonar WITH PASSWORD 'ad123456!';
# 或下面这种,两者等价
CREATE ROLE sonar WITH PASSWORD 'ad123456!';
# 在创建的时候同步添加权限:依次为登录、创建数据库、创建角色权限,建议只设置登录权限和密码,后续其他权限单独操作。
CREATE ROLE sonar WITH
LOGIN
CREATEDB
CREATEROLE
PASSWORD 'ad123456!';

image-20240918135236979

3.2、创建PostgreSQL数据库

1
2
# 创建数据库sonarqube_db,并且指定所有者为sonar
CREATE DATABASE sonarqube_db OWNER sonar;

\l查看所有数据库,看以看到刚才的数据库成功创建

image-20240918135632541

1
2
# 将sonarqube_db数据库的所有权限都赋予sonar,否则sonar只能登录控制台,没有任何数据库操作权限
GRANT ALL PRIVILEGES ON DATABASE sonarqube_db to sonar;

image-20240918135822246

之后就可以使用sonar用户登录到对应的数据库了:

1
2
3
4
# 进入到sonarqube_db数据库
\c sonarqube_db
# 或在postgresql控制台直接以sonar用户进入到sonarqube_db数据库
psql -U sonar -d sonarqube_db

切换非超级管理员区别在控制台的符号会有变化:

image-20240918143354084

使用\q退出PostgreSQL命令行。

3.3、启动PostgreSQL远程访问

修改远程监听配置:修改为对所有连接IP进行监听

1
2
3
# 配置文件路径
/etc/postgresql/16/main/postgresql.conf
sudo vim /etc/postgresql/16/main/postgresql.conf

注意: 所有用户控制台,均能看到配置文件,建议在postgresql控制台(postgres用户)中进行调整。

image-20240918140445978

默认情况下,postgresql服务器仅监听本地地址,其中Connections Settings将listen_address修改为’*’开启远程访问:

image-20240918141036993

image-20240918141240461

修改完成保存即可。之后重启PostgreSQL服务:

1
sudo service postgresql restart

3.4、配置防火墙及PostgreSQL端口开放

  • 配置防火墙:
1
2
# 查看防火墙状态:
sudo ufw status

image-20240918142240306

防火墙状态如果为活动状态,则执行下面指令开放5432端口:

1
sudo ufw allow 5432

手动关闭防火墙:

1
sudo ufw disable

开启防火墙:

1
sudo ufw enable
  • 检查5432端口监听:

默认PostgreSQL开放5432端口,检查:

1
2
3
ss -nlt | grep 5432
#
netstat -anp | grep 5432

可以看到对任意IP(0.0.0.0)地址5432端口进行监听:

image-20240918141909692

3.5、配置服务器接受远程连接

PostgreSQL安全策略默认无法通过远程访问数据库,直接远程连接会报[28000]错误:

image-20240918152337152

配置服务器接收远程连接,编辑pg_hba.conf配置文件:

1
sudo vim /etc/postgresql/16/main/pg_hba.conf

在ipv4那里添加一行下面这行内容:

1
2
# 配置允许所有IP连接
host all all 0.0.0.1/0 trust

image-20240918152827215

保存后重启postgresql服务:

1
sudo service postgresql restart

之后使用客户端就可以正常远程连接了:

image-20240918153021855

参考:

https://developer.aliyun.com/article/1206821

https://blog.csdn.net/Alenxjxj/article/details/135254476

https://blog.csdn.net/Blingbling007/article/details/107908347


Ubuntu手动安装及配置PostgreSQL
http://www.codestar.top/2024/10/08/Linux/Ubuntu手动安装及配置PostgreSQL/
作者
mini小新
发布于
2024年10月8日
更新于
2024年10月8日
许可协议