Ubuntu2204server系统安装postgresql14并配置密码远程连接

前言:

最近因项目需要安装postgresql14,系统是ubuntu2204server系统,安装好后发现无法实现远程连接,解决了之后在此记录一下解决方法。

疑问:

什么情况下需要配置postgresql远程连接?

①如果是postgresql和应用在同一台服务器上,那么由于相同主机访问时直接采用socket连接即可,所以这种情况下不需要配置postgresql远程连接,且这种连接方式不需要什么额外的配置,只需要使用命令sudo -u postgres psql -d postgres直接连接即可。

②如果是postgresql和应用不在一台主机上,也就是postgresql配置在一台单独的服务器上,那么就需要开放密码连接方式,防火墙开放5432端口,通过ip+端口+密码的方式访问数据库。

具体的配置方式如下:
1、安装数据库并配置防火墙
shell 复制代码
sudo apt install postgresql14	# 安装postgresql14版本的数据库
sudo ufw allow 5432/tcp		# 放行5432端口
sudo ufw reload			# 重启服务
2、修改配置文件并配置密码

(1)修改pg_hdb.conf

shell 复制代码
sudo vim /etc/postgresql/14/main/pg_hba.conf  # 修改两处配置并添加一处配置
# "local" is for Unix domain socket connections only
local   all             all                                     md5 # 将此处的peer修改为md5验证方式
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5	# 将此处的peer修改为md5验证方式

# 文件末尾添加如下一行,这个是开放给其他服务器密码访问的配置
host    all             all             0.0.0.0/0               md5

(2)修改postgresql

shell 复制代码
listen_addresses = '*'      # 搜索此行,改为*,监听所有网络接口
password_encryption = md5	# 搜索此行打开注释,并配置为md5

(3)修改密码

shell 复制代码
# 切换到 postgres 用户
sudo su - postgres
# 启动 psql(在数据库本机用postgresql用户操作不需要密码,因为使用 peer 认证)
psql	# 直接敲psql能登入是因为匹配了pg_hba.conf配置文件中的这条规则(local all postgres peer)
# 在 psql 中执行以下命令重置密码
ALTER USER postgres WITH PASSWORD 'your_strong_password_here';
# 退出 psql
\q
# 返回到原来的用户
exit
3、验证
shell 复制代码
sudo systemctl reload postgresql	# 重载一下配置
sudo psql -U postgres -h 127.0.0.1 -d postgres -W	# 输入密码后能成功登入数据库就成功了