Ubuntu2204server系统安装postgresql14并配置密码远程连接
前言:
最近因项目需要安装postgresql14,系统是ubuntu2204server系统,安装好后发现无法实现远程连接,解决了之后在此记录一下解决方法。
疑问:
什么情况下需要配置postgresql远程连接?
①如果是postgresql和应用在同一台服务器上,那么由于相同主机访问时直接采用socket连接即可,所以这种情况下不需要配置postgresql远程连接,且这种连接方式不需要什么额外的配置,只需要使用命令sudo -u postgres psql -d postgres
直接连接即可。
②如果是postgresql和应用不在一台主机上,也就是postgresql配置在一台单独的服务器上,那么就需要开放密码连接方式,防火墙开放5432端口,通过ip+端口+密码的方式访问数据库。
具体的配置方式如下:
1、安装数据库并配置防火墙
sudo apt install postgresql14 # 安装postgresql14版本的数据库
sudo ufw allow 5432/tcp # 放行5432端口
sudo ufw reload # 重启服务
2、修改配置文件并配置密码
(1)修改pg_hdb.conf
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
listen_addresses = '*' # 搜索此行,改为*,监听所有网络接口
password_encryption = md5 # 搜索此行打开注释,并配置为md5
(3)修改密码
# 切换到 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、验证
sudo systemctl reload postgresql # 重载一下配置
sudo psql -U postgres -h 127.0.0.1 -d postgres -W # 输入密码后能成功登入数据库就成功了