irpas技术客

ubuntu linux 环境下,PostgreSQL的安装及远程访问配置_优码_linux postgresql 远程连接

网络 3623

本文尝试在ubuntu 18.04的环境中安装最新版本(14.)的PostgreSQL,并且配置远程访问。

一、安装最新版本的PostgreSQL

在一般情况下,ubuntu 18.04默认的存储库中PostgreSQL的版本是10.0的,因此在安装之前需要配置安装源,添加PostgreSQL官方存储库,以便获取到最新版本的PostgreSQL。

1、开始之前,可以通过以下指令检查检查一下ubuntu存储库中可?的PostgreSQL 版本:

sudo apt update sudo apt -y upgrade apt show postgresql

结果大概是这样的:

Package: postgresql Version: 10+190 Priority: optional Section: database Source: postgresql-common

2、如果发现ubuntu存储库中的PostgreSQL不是最新的,或是我们需要的,那么就需要通过以下指令来添加PostgreSQL官方存储库:

#创建文件存储库配置 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' #导入存储库签名密钥 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - #更新包列表 sudo apt update #安装最新版本的PostgreSQL。 #如果需要特定版本,请使用“postgresql-14”或类似版本,而不是“postgresql”: sudo apt -y install postgresql-14 ## 等待安装过程....

3、安装完毕后,切换到PostgreSQL创建的linux账户下,查看安装结果:

# su postgres $ psql --version

出现类似结果时,表明PostgreSQL已经安装成功。

psql (PostgreSQL) 14.3 (Ubuntu 14.3-1.pgdg18.04+1)

二、配置PostgreSQL远程访问

接下来要开放远程访问PostgreSQL需要修改权限配置文件pg_hba.conf、配置PostgreSQL参数postgresql.conf,重启PostgreSQL服务,同时不要忘了打开防火墙或在云服务器控制台在打开5432端口。

1、使用postgres账户修改pg_hba.conf

$ vi /etc/postgresql/14/main/pg_hba.conf

打开文件后找到以下配置内容:

# Database administrative login by Unix domain socket local all postgres md5 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 0.0.0.0/0 md5

修改 local及host最后的部分,其值可以是 peer(为等同使用当前postgres linux账户)、trust(为无密码)、md5(为使用md5加密密码)、scram-sha-256(为使用sha-256加密密码),一般情况下,local一行可以保持peer(当应用程序希望通过localhost使用密码访问PostgreSQL服务时,可以考虑设置为md5或sha-256),而host一行可以设置为md5或sha-256。

2、使用postgres账户修改postgresql.conf

$ vi /etc/postgresql/14/main/postgresql.conf

打开文件后找到以下配置内容: ?

data_directory = '/var/lib/postgresql/14/main' hba_file = '/etc/postgresql/14/main/pg_hba.conf' listen_addresses = '*' # localhost port = 5432

修改listen_addresses为‘*’,使得外网可以可以访问PostgreSQL服务,当然也可以根据自己的实际需要修改port参数。

3、重启PostgreSQL服务

完成以上配置后,需要重启PostgreSQL服务才能使其生效。这时需要使用exit指令,退出postgres账户,回到linux管理员账户下,使用以下指令重启服务:

systemctl restart postgresql

如果服务列表中找不到postgresql时,可以使用:

/etc/init.d/postgresql restart

4、打开防火墙或配置云服务器访问策略

sudo apt install iptables iptables -I INPUT -p tcp --dport 5432 -j ACCEPT iptables-save

5、检查结果

一切ok,这时你可以通过以下指令来访问PostgreSQL数据库:

psql -U postgres -h8.8.8.8 -p5432 -d postgres

-U:用来设置连接PostgreSQL的用户名

-h:用来设置PostgreSQL数据库服务器监听的IP地址

-p:用来设置监听端口信息

-d:用来设置PostgreSQL远程连接的database

另外PostgreSQL还支持pgsql+URL的方式进行连接:

psql postgresql://$username:$password@$hostip:$port/$dbname

三、修改PostgreSQL用户密码

在PostgreSQL默认的安装过程中,postgres用户的默认密码为空,这时就需要在PostgreSQL安装完成后,重新设置其密码。这时可以通过以下两种方式修改postgres的密码: 1、使用postgres登录PostgreSQL数据库,使用SQL指令来修改密码。

ALTER USER postgres WITH PASSWORD 'your pwd';

2、通过linux指令来修改postgres账户密码

$ sudo passwd -d postgres $ sudo -u postgres passwd New password: Retype new password: passwd: all authentication tokens updated successfully

四、卸载老版本的PostgreSQL

如果你的ubuntu服务器可能已经存在老版本的PostgreSQL,你可以通过以下指令来查看其版本:

# postgres方式 $ postgres --version # pg_config方式 $ pg_config|grep VERSION # pg_controldata方式 pg_controldata --version

如果你要在安装新版本前卸载原来的PostgreSQL,请首先做好数据备份,然后通过下列指令来卸载老版本的PostgreSQL:

# 删除相关安装 $ sudo apt-get --purge remove postgresql\* # 删除配置及相关文件 $ sudo rm -r /etc/postgresql/ $ sudo rm -r /etc/postgresql-common/ $ sudo rm -r /var/lib/postgresql/ # 删除用户和所有组 $ sudo userdel -r postgres $ sudo groupdel postgres


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Linux #postgresql #远程连接